继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

sqlalchemy数据库分层操作

德玛西亚99
关注TA
已关注
手记 270
粉丝 92
获赞 557

 在学习sqlalchemy操作中,最常见的就是如下的示例,一个文件基本上包含了数据库的增删改查。sqlalchemy的具体操作我就不再详细说明了。流程大概是:

  1. 定义表

  2. 创建数据库引擎

  3. 创建表

  4. 插入数据

  5. 查询数据

复制代码

 1 #coding:utf-8 2  3 from sqlalchemy import Column,String,create_engine,MetaData 4 from sqlalchemy.orm import sessionmaker 5 from sqlalchemy.ext.declarative import declarative_base 6 from sqlalchemy.dialects.mysql import INTEGER,CHAR 7  8 Base = declarative_base() 9 10 meta = MetaData()11 12 13 #定义User对象14 class User(Base):15     __tablename__ = 'user_one'16 17     id = Column(String(20),primary_key=True)18     name = Column(String(20))19 20 #初始数据库连接21 engine = create_engine('mysql+mysqldb://root:123@localhost:3306/test')22 23 #创建DBsession24 DBSession = sessionmaker(bind=engine)25 26 #创建session会话,数据库操作的基石。27 session = DBSession()28 29 #在数据库中创建表user30 User.metadata.create_all(bind=engine)31 32 #插入数据33 new_user = User(id='1',name='kiit')34 35 #提交数据到session36 session.add(new_user)37 38 #提交到数据库39 session.commit()40 41 #查询User表42 user_data = session.query(User).all()43 44 #关闭session连接45 session.close()46 47 #循环将返回的数据打印48 for i in user_data:49     print i.id,i.name

复制代码

 

 

而在实际的生产环境中根本不可能使用一个文件完成数据的这么多的操作。数据库的操作大体分为:增、删、改、查 。那么就分为这四个部分去完成数据的操作

1、定义数据库

models.py

复制代码

 1 #coding:utf-8 2  3 from sqlalchemy import Column,CHAR,INTEGER 4 from sqlalchemy.ext.declarative import declarative_base 5  6 Base = declarative_base() 7  8 class User(Base): 9     __tablename__ = "user"10 11     id = Column(CHAR(20),primary_key = True)12     name = Column(CHAR(20))13 14 15 class Solary(Base):16     __tablename__ = "solary"17  18     id = Column(INTEGER,primary_key = True)19     name = Column(CHAR(20))20     num =  Column(CHAR(20))

复制代码

 

2、创建数据库

sql_create.py

复制代码

 1 #coding:utf-8 2  3 from sqlalchemy import create_engine 4 from models import * 5  6 engine = create_engine('mysql+mysqldb://root:123@localhost:3306/test') 7  8 def create_table(table_name): 9     table_name.metadata.create_all(engine)10     print "创建成功"

复制代码

 

3、插入数据

sql_insert.py

复制代码

 1 #coding:utf-8 2  3 from sqlalchemy.orm import sessionmaker 4 from sqlalchemy.ext.declarative import declarative_base 5 from sqlalchemy.dialects.mysql import INTEGER,CHAR 6 from sqlalchemy import create_engine,Column 7  8  9 def insert(new_data):10 11     Base = declarative_base()   
12     engine = create_engine('mysql+mysqldb://root:123@localhost:3306/test')13     print "创建数据库引擎"14 15     DBSession = sessionmaker(bind=engine)16     session = DBSession()17     print "创建session对象"18         19     session.add(new_data)20     print "添加数据到session"21 22     session.commit()23     print "提交数据到数据库"24 25     session.close()26     print "关闭数据库连接"27 28 if __name__ == "__main__":29     insert(User)

复制代码

 

 4、查询数据

sql_select.py

复制代码

 1 #coding:utf-8 2  3 from sqlalchemy.orm import sessionmaker 4 from sqlalchemy import create_engine 5 from models import * 6  7 def select(table_name): 8     engine = create_engine("mysql+mysqldb://root:123@localhost:3306/test") 9     print "初始化数据库引擎"10 11     DBSession = sessionmaker(bind=engine)12     session = DBSession()13     print "创建session对象"14 15     table_data = session.query(User).all()16     print "查询"17 18     session.close()19 20     return table_data21 22 23 if __name__ == "__main__":24     select_fun(User)

复制代码

 

 5、使用增,删,改函数

test.py

复制代码

 1 #coding:utf-8 2  3 from models import * 4 from sql_create import * 
 5 from sql_select import * 6  7  8 create_table(Solary) 9 10 new_user = User(id="8",name="miko")11 12 insert(new_user)13 print "产生新的用户"14 15 16 data = select(User)17 18 for i in data:19     print i.id,i.name

复制代码

 

函数化操作的好处就是避免重复代码,并且能够解开耦合。想要查询数据库时不需要先定义table,想要删除数据库时不需要再创建引擎。以上代码经过多次测试,亲测可用。

原文出处

打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP