当前位置:Gxlcms > 数据库问题 > SQLAlchemy学习

SQLAlchemy学习

时间:2021-07-01 10:21:17 帮助过:13人阅读

由于mysqldb依然不支持py3,所以这里我们用pymysql与sqlalchemy交互

3.sqlalchemy基本使用

下面我们创建一个表是这样的

CREATE TABLE user (
    id INTEGER NOT NULL AUTO_INCREMENT,
    name VARCHAR(32),
    password VARCHAR(64),
    PRIMARY KEY (id)
)
import sqlalchemy
from sqlalchemy import create_engine
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Column, Integer, String
 
engine = create_engine("mysql+pymysql://root:alex3714@localhost/testdb",
                                    encoding=‘utf-8‘, echo=True)
 
 
Base = declarative_base() #生成orm基类
 
class User(Base):
    __tablename__ = ‘user‘ #表名
    id = Column(Integer, primary_key=True)
    name = Column(String(32))
    password = Column(String(64))
 
Base.metadata.create_all(engine) #创建表结构

  除上面的创建之外,还有一种创建表的方式,虽不常用,但还是看看吧

技术分享图片
from sqlalchemy import Table, MetaData, Column, Integer, String, ForeignKey
from sqlalchemy.orm import mapper
 
metadata = MetaData()
 
user = Table(user, metadata,
            Column(id, Integer, primary_key=True),
            Column(name, String(50)),
            Column(fullname, String(50)),
            Column(password, String(12))
        )
 
class User(object):
    def __init__(self, name, fullname, password):
        self.name = name
        self.fullname = fullname
        self.password = password
 
mapper(User, user) #the table metadata is created separately with the Table construct, then associated with the User class via the mapper() function
View Code

事实上,我们用第一种方式创建的表就是基于第2种方式的再封装。

 

最基本的表我们创建好了,那我们开始用orm创建一条数据试试

Session_class = sessionmaker(bind=engine) #创建与数据库的会话session class ,注意,这里返回给session的是个class,不是实例
Session = Session_class() #生成session实例
 
 
user_obj = User(name="Jack",password="123") #生成你要创建的数据对象
print(user_obj.name,user_obj.id)  #此时还没创建对象呢,不信你打印一下id发现还是None
 
Session.add(user_obj) #把要创建的数据对象添加到这个session里, 一会统一创建
print(user_obj.name,user_obj.id) #此时也依然还没创建
 
Session.commit() #现此才统一提交,创建数据

 

SQLAlchemy学习

标签:bind   oci   one   arch   语言   struct   session   缺点   char   

人气教程排行