Python連線mysql[ORM之sqlalchemy]
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from sqlalchemy import create_engine
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Column,Integer,String, DateTime,Boolean,desc,asc
from sqlalchemy.orm import sessionmaker
import datetime
# create_engine()返回一個Engine的例項
engine = create_engine("mysql+pymysql://root: [email protected]:3306/news?charset=utf8",
encoding='utf8')
# 通過declarative_base()功能建立一個基類
Base = declarative_base()
# 建立會話,繫結例項
Session = sessionmaker(bind=engine)
class News(Base):
'''構造一個類,對映表news'''
__tablename__ = 'news'
id = Column(Integer, primary_key=True ,autoincrement=True)
title = Column(String(200), nullable=False)
content = Column(String(2000), nullable=False)
created_at = Column(DateTime,nullable=True)
types = Column(String(10), nullable=False)
image = Column(String(300), nullable=False)
author = Column(String(20), nullable=True )
view_count = Column(Integer,default=0)
is_valid = Column(Boolean,default=1)
class OrmTest(object):
'''呼叫類之前,建立會話'''
def __init__(self):
self.session = Session()
# 新增一條資料
def add_one(self):
'''新增一條或多條資料'''
new_obj = News(
title = '標題',
content = '內容',
types = '百家',
created_at = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')
)
new_obj2 = News(
title='標題1',
content='內容1',
types='百家1',
created_at=datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')
)
# 新增一條資料
self.session.add(new_obj)
# 新增多條資料,使用[]
self.session.add_all([new_obj,new_obj2])
#新增後,提交,或者回滾.rollback()
self.session.commit()
return new_obj
# 查詢一條資料,返回一個object
def get_one(self):
'''查詢一條或多條資料,返回'''
return self.session.query(News).get(2)
# 查詢多條資料,filter,返回一個object list
def get_more(self):
return self.session.query(News).filter(
News.is_valid==True,News.types=='百家',News.author.is_(None)
).order_by(desc(News.id)).all()
# 查詢多條資料,filter_by
def get_more2(self):
return self.session.query(News).filter_by(
is_valid=True,types='百家'
).order_by(desc(News.id)).all()
# 修改一條資料
def update_date(self, pk):
'''修改一條資料'''
obj_list = self.session.query(News).filter(News.id == pk)
if obj_list:
for obj in obj_list:
obj.is_valid = 1
self.session.add(obj)
self.session.commit()
return True
return False
# 修改多條資料
def update_more_date(self,pk):
'''修改多條資料'''
data_list = self.session.query(News).filter(News.types==pk)
if data_list:
for item in data_list:
item.is_valid = 1
self.session.add(item)
self.session.commit()
return True
return False
# 刪除資料
def delete_date(self, pk):
'''刪除資料'''
data_list = self.session.query(News).filter(News.id < pk)
n = 0
if data_list:
for item in data_list:
self.session.delete(item)
n +=1
self.session.commit()
return '刪除%s條資料' % n
return '條件沒有資料要刪除'
if __name__ == '__main__':
obj = OrmTest()
rest=obj.get_one()
print(rest.title)
查詢:
查詢一條資料,可以使用get(id),
查詢多條資料,filter或者filter_by, 不同的是寫法問題,結果是一樣,
相關推薦
Python連線mysql[ORM之sqlalchemy]
#!/usr/bin/env python # -*- coding: utf-8 -*- from sqlalchemy import create_engine from sqlalchemy.ext.declarative import declarati
西遊之路——python全棧——ORM之SQLAlchemy(1)
目錄 定義一個類,ORM(物件關係對映)將這個類轉換為sql語句,使用pymysql進行執行 一,底層處理 使用engine/connectionpooling/dialect進行資料庫操作,engine使用connectionpooling連線資料庫,然後在通過d
西遊之路——python全棧——ORM之SQLAlchemy(3)外來鍵與relationship的關係
目錄 relationship是為了簡化聯合查詢join等,建立的兩個表之間的虛擬關係,這種關係與標的結構時無關的。他與外來鍵十分相似,確實,他必須在外來鍵的基礎上才允許使用 不然會
Python之道--Python連線MYSQL資料庫和傳送郵件
主機環境:Linux yan-Server 3.4.36-gentoo #3 SMP Mon Apr 1 14:09:12 CST 2013 x86_64 AMD Athlon(tm) X4 750K Quad Core Processor AuthenticAMD GNU
python-連線MySQL(mysql.connector與MySQLdb區別)
1.安裝mysql-connector 命令 pip install mysql-connector import mysql.connector cnx = mysql.connector.connect(user='roo
【TCL】使用TCL連線Mysql資料庫之編譯mysqltcl(TCL安裝在CentOS 7中)
最近在用tcl,想著連線mysql,從網上查了一下發現用mysqltcl比較好,不過需要自己編譯,使用過程遇上一些問題,因此就總結了一下。首先是先編譯mysqltcl。說明一下,我的tcl是通過yum install tcl命令直接安裝的,因此不同安裝方式tcl路徑可能有變化,例如如果是通過rpm安
Python連線MySQL獲取當前連結的processlist id
文章目錄 Python連線MySQL獲取當前連結的processlist id 一、解決方法 二、驗證 Python連線MySQL獲取當前連結的processlist id 在使用MySQL client API
Python連線MySQL資料庫執行sql語句時的引數問題
由於工作需要,今天寫了一個Python小指令碼,其中需要連線MySQL資料庫,在執行sql命令時需要傳遞引數,結果出問題了。在網上查了一下,發現有以下幾種方式傳遞引數: 一.直接把sql查詢語句完整寫入字串 try: connection = MySQLdb.connect(user
使用python連線MySQL資料庫
因為在你在python連線MySQL資料庫的時候,不能直接進行訪問,所以,你需要先下載pymysql模組: pip install pymysql -i https://pypi.tuna.tsinghua.edu.cn/simple 這裡可以使用pip install pymys
python連線MySQL資料庫問題
Python 資料庫圖解流程 Connection、Cursor比喻 Connection()的引數列表 host,連線的資料庫伺服器主機名,預設為本地主機(localhost)。user,連線資料庫的使用者名稱,預設為當前使用者。pass
python連線mysql出錯,_mysql_exceptions.OperationalError: (1045.......)
python連線mysql出錯,_mysql_exceptions.OperationalError: (1045, "Access denied for user 'root'@'localhost' (using password: YES)") 是由於配置資料庫時候,資料庫名稱和使用者名
mac解決python連線MySQL,import MySQLdb後,出現no suitable image... but wrong architecture
在mac下使用MySQLdb模組,import時遇到以下錯誤: ImportError: dlopen(/Library/Python/2.7/site-packages/_mysql.so, 2): no suitable image found. Did find: /Library
用 Python 連線 MySQL 的幾種姿勢
儘管很多 NoSQL 資料庫近幾年大放異彩,但是像 MySQL 這樣的關係型資料庫依然是網際網路的主流資料庫之一,每個學 Python 的都有必要學好一門資料庫,不管你是做資料分析,還是網路爬蟲,Web 開發、亦或是機器學習,你都離不開要和資料庫打交道,而 MySQL 又是最流行的一種資料庫
python連線MySQL資料庫並讀取資料
# 匯入模組 import pymysql # 1.連線到mysql資料庫 conn = pymysql.connect(host='localhost', user='root', password='1234', db='mycommodity', cha
python連線mysql出現的一些問題
Pycharm中的SQL語句顯示有錯:設定一下"File | Settings | Languages & Frameworks | SQL Dialects"中的資料庫環境,我這裡是Mysql,設定成它就ok 連線語句報錯:具體報錯資訊已不可究,大概就是mysql資料庫版本
用 Python 連線 MySQL 的幾種方式
儘管很多 NoSQL 資料庫近幾年大放異彩,但是像 MySQL 這樣的關係型資料庫依然是網際網路的主流資料庫之一,每個學 Python 的都有必要學好一門資料庫,不管你是做資料分析,還是網路爬蟲,Web 開發、亦或是機器學習,你都離不開要和資料庫打交道,而 MySQL 又是最
python 連線mysql資料庫
1、安裝依賴包 yum install gcc python-devel mysql-devel zlib-devel openssl-devel 2、下載安裝 https://pypi.org/pro
Python連線MySQL資料庫
本文使用Python3.7和MySQL8.0.11作為從測試: 1、PyMySQL安裝方法: $ pip3 install PyMySQL 2、資料庫連線 首先確認: 您已經建立了資料庫 SYS. 在SYS資料庫中您已經建立了表 EMPLOYEE EMPLOYE
python使用mysql-connector-python連線mysql時報錯No module named 'mysql.connector'; 'mysql' is not a package
情況是這樣的: 我在專案A下建立了一個python檔案,編寫程式碼 import mysql.connector mydb = mysql.connector.connect( host="hostname", # 資料庫主機地址 port='port', u
ORM之SQLAlchemy
pan 查詢 fff sel 王者榮耀 local sql 條件 group by SQLAlchemy,ORM框架 類 --> 表 對象 --> 一行數據 類的字段 --> 數據庫表的一列 作用:幫助我們使用類和對象快速實現數據庫操作 單表操