sqlalchemy数据库分层操作

 在学习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 #创建DBsession 24 DBSession = sessionmaker(bind=engine) 25 26 #创建session会话,数据库操作的基石。 27 session = DBSession() 28 29 #在数据库中创建表user 30 User.metadata.create_all(bind=engine) 31 32 #插入数据 33 new_user = User(id='1',name='kiit') 34 35 #提交数据到session 36 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_fun(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(table_name).all() 16 print "查询" 17 18 session.close() 19 20 return table_data 21 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,想要删除数据库时不需要再创建引擎。以上代码经过多次测试,亲测可用。


__EOF__

本文作者goldsunshine
本文链接https://www.cnblogs.com/goldsunshine/p/9265034.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   金色旭光  阅读(1140)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
点击右上角即可分享
微信分享提示