Python的SQLalchemy模塊連接與操作MySQL的基礎示例
一、SQLalchemy簡介
SQLAlchemy是一個開源的SQL工具包,基本Python編程語言的MIT許可證而發(fā)布的對象關系映射器。SQLAlchemy提供了“一個熟知的企業(yè)級全套持久性模式,使用ORM等獨立SQLAlchemy的一個優(yōu)勢在于其允許開發(fā)人員首先考慮數據模型,并能決定稍后可視化數據的方式。
二、SQLAlchempy的安裝
首先需安裝mysql,這里就不再多說了.....
然后,下載SQLAlchemy(http://www.sqlalchemy.org/download.html),這里我們以Windows系統(tǒng)為例,然后打開cmd,在安裝包文件目錄下,運行
python setup.py install
,通過python下輸入
import sqlalchemy
,執(zhí)行未報錯則表示安裝成功
三、SQLAlchemy的使用實例
1、完成簡單數據表信息查詢
# 1. 導入模塊 from sqlalchemy import * from sqlclchemy.orm import * # 2. 建立數據庫引擎 mysql_engine = create_engine("$address", echo, module) #address 數據庫://用戶名:密碼(沒有密碼則為空)@主機名:端口/數據庫名 #echo標識用于設置通過python標準日志模塊完成的SQLAlchemy日志系統(tǒng),當開啟日志功能,我們將能看到所有的SQL生成代碼 # 3. 建立連接 connection = mysql_engine.connect() # 4. 查詢表信息 result = connection.execute("select name from t_name) for row in result: print "name: ", row['name'] # 5. 關閉連接 connection.close()
2、插入新的數據表
# 1. 導入模塊 from sqlalchemy import * from sqlclchemy.orm import * # 2. 建立數據庫引擎 mysql_engine = create_engine("$address", echo, module) #address 數據庫://用戶名:密碼(沒有密碼則為空)@主機名:端口/數據庫名 #echo標識用于設置通過python標準日志模塊完成的SQLAlchemy日志系統(tǒng),當開啟日志功能,我們將能看到所有的SQL生成代碼 # 3. 設置metadata并將其綁定到數據庫引擎 metadata = Metadata(mysql_engine) # 4. 定義需新建的表 users = Table('users', metadata,Column('user_id', Integer, primary_key=True), Column('name', String(40)), Column('age', Integer), Column('password', String),) #Table實現(xiàn)方式與SQL語言中的CRETE TABLE類似 # 5. 在數據庫中創(chuàng)建表 metadata.create_all(mysql_engine) #向數據庫發(fā)出CREATE TABLE命令,由此數據庫新建名為users的表 #調用時會檢查已經存在的表結構,因此可重復調用 # 6. 創(chuàng)建一個與數據庫中的users表匹配的python類 class user(): def __int__(self, name, fullname, password): self.name = name self.fullname = fullname self.passwd = passwd #python類的屬性需與users表的列名一致 # 7. 設置映射 from sqlalchemy.orm import mapper mapper(user, users) # mapper()創(chuàng)建一個新的Mapper對象,與定義的類相關聯(lián) #需要注意的是,通過mapper建立映射的數據表必須帶有主鍵,如果沒有主鍵就無法定位某個table的某行row, #如果無法定位某行row, 就無法做Object-relational mapping這樣的映射 # 8. 創(chuàng)建session Session = sessionmaker(bind=mysql_egnine) session = Session() #由此我們只需對python的user類的操作,后臺數據庫的具體實現(xiàn)交由session完成 # 9. 執(zhí)行 session.commit() #實現(xiàn)與數據庫的交互 # 10. 查詢 usr_info = session.query(user).filter_by(age=12).first() #返回數據庫中年紀12歲的第一條數據
上面結合SQLAlchemy中ORM部分實現(xiàn)一個Mapper對象,將類的實例對應表中的記錄,實例的屬性對應字段。實現(xiàn)一個Data Mapping需要三個元素:Tabella Metadata, user-defined class, mapper對象,這三個是實現(xiàn)對象對表映射的基本元素,在此基礎上,可實現(xiàn)一對多的映射,實現(xiàn)類似多表查詢的問題
首先創(chuàng)建兩個相關聯(lián)的表Student, Score,表Score中以主表的id字段為外鍵
Student = Table('student', engine, column(‘id', Interger, primary_key = True), column('name', String, nullable=False), column('age', Interger) ) Score = Table('score', engine, column('id', Integer, primary_key=True), column('student_id', Integer, ForeignKey(student.id)) column('category', String, nullable=False), column('score', Integer) )
兩表中,Score表以Student表中id項為外鍵,一般稱Student表為主表,Score表為從表
表創(chuàng)建好后,那同樣,在python中需定義兩個與表相對應的類
class student_type(object): def __init__(self): self.name = None class score_type(object): def __init__(self): self.category = None
在建立mapping時,我們只需要體現(xiàn)兩個表間又相互關聯(lián)關系,
并不關心表中具體的主鍵與外鍵等關系(由SQLAlchemy處理),
當需要體現(xiàn)表student與表score間的關聯(lián)關系,mapper具體的定義方法如:
mapper(student_type, student, properties={'_scores': relation(score_type, Score)})
通過properties中參數,實現(xiàn)score_type 與Score的映射,
由此可以通過訪問student中的'_scores'屬性來查詢Score表中的值
另外,properties是一個字典,可以添加多個屬性,SQLAlchemy中有些模塊如backref, 也可導入
綜上,使用關系映射可以方便地從一個對象直接找到相對應的其他的對象
相關文章
python爬蟲MeterSphere平臺執(zhí)行報告使用實戰(zhàn)
這篇文章主要為大家介紹了python爬蟲MeterSphere平臺執(zhí)行報告使用實戰(zhàn),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-12-1210行Python代碼實現(xiàn)Web自動化管控的示例代碼
這篇文章主要介紹了10行Python代碼實現(xiàn)Web自動化管控的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-08-08Python實現(xiàn)滑動平均(Moving Average)的例子
今天小編就為大家分享一篇Python實現(xiàn)滑動平均(Moving Average)的例子,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-08-08