python sqlalchemy mysql 自動映射


SQLAlchemy是Python編程語言下的一款ORM框架,該框架建立在數據庫API之上,使用關系對象映射進行數據庫操作

簡言之便是:將對象轉換成SQL,然后使用數據API執行SQL並獲取執行結果

 

SQLAlchemy本身無法操作數據庫,其必須依賴pymsql等第三方插件,Dialect用於和數據API進行交流,根據配置文件的不同調用不同的數據庫API,從而實現對數據庫的操作.

以下列舉了幾種常用插件的數據庫url格式:

MySQL-Python
    mysql+mysqldb://<user>:<password>@<host>[:<port>]/<dbname>
  
pymysql
    mysql+pymysql://<username>:<password>@<host>/<dbname>[?<options>]
  
MySQL-Connector
    mysql+mysqlconnector://<user>:<password>@<host>[:<port>]/<dbname>
  
cx_Oracle
    oracle+cx_oracle://user:pass@host:port/dbname[?key=value&key=value...]

本文使用 pymysql 插件:

安裝:

# 安裝pymysql插件
pip install pymysql 

# 安裝sqlalchemy
pip install sqlalchemy

安裝成功后即可使用:

本實例用法為表已經存在, ORM 自動映射類

from datetime import datetime
from sqlalchemy.ext.automap import automap_base
from sqlalchemy.orm import sessionmaker
from sqlalchemy import create_engine

# 數據庫連接url
DB_CONNECT_STRING = 'mysql+pymysql://username:password@address:port/database'

# 創建引擎
engine = create_engine(DB_CONNECT_STRING, echo=True)

# 自動映射
Base = automap_base()
Base.prepare(engine,reflect=True)

# 獲取所有表的映射類
tables = Base.classes.keys()

# 獲取指定類user表 --> user實體類
user = Base.classes.user

# 查看user
#print(user.__dict__)

# 獲取所有字段或屬性
keys = test_case.__table__.columns.keys()

# 創建session
Session = sessionmaker(bind=engine)
session = Session()

# 查表,返回實例列表
result = session.query(test_case).all()

# 按條件查表, 返回實例集合
ret = session.query(test_case).filter_by(name='zhangsan').all()

# 創建新的實例,並插入,nowtime字段為TIMESTAMP
newUser = user(name='lisi', age=10, nowtime=datetime.now())
session.add(newUser)

# 提交
session.commit()

 

參考:

Python操作MySQL之SQLAlchemyhttps://www.cnblogs.com/ccorz/p/5711955.html

python操作數據庫常用工具: https://foofish.net/python-mysql.html

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM