Python的ORM框架SQLAlchemy使用入门(二)【连接MySql数据库】
来源:互联网 发布:excel的数据库管理功能 编辑:程序博客网 时间:2024/05/21 23:00
众生皆苦,放下即自在。天地皆空,唯有人在其中苦。沧海桑田,人生苦短。天地之空,在于无欲,任由万物在其中自由变幻,它依然安之若泰。人生之苦,皆因无力回天却又耿耿于怀。人本是人,只有承认自己不是万能之主,从而学会放下,才能与天地同自在。放下你无力改变的,追求你力所能及的,人生才自在。
连接,增加数据 代码如下:
from sqlalchemy import *from datetime import datetimefrom sqlalchemy.orm import *metadata = MetaData('mysql+pymysql://root:123456@localhost/SQLAlchemySample')metadata.bind.echo = Falseuser_table = Table( 'tf_user', metadata, Column('id', Integer, primary_key=True), Column('user_name', Unicode(16), unique=True, nullable=False), Column('password', Unicode(40), nullable=False), Column('display_name', Unicode(255), default=''), Column('created', DateTime, default=datetime.now()))group_table = Table( 'tf_group', metadata, Column('id', Integer, primary_key=True), Column('group_name', Unicode(16), unique=True, nullable=False),)permission_table = Table( 'tf_permission', metadata, Column('id', Integer, primary_key=True), Column('permission_name', Unicode(16), unique=True, nullable=False))user_group_table = Table( 'tf_user_group', metadata, Column('user_id', None, ForeignKey('tf_user.id'), primary_key=True), Column('group_id', None, ForeignKey('tf_group.id'), primary_key=True))group_permission_table = Table( 'tf_group_permission', metadata, Column('permission_id', None, ForeignKey('tf_permission.id'), primary_key=True), Column('group_id', None, ForeignKey('tf_group.id'), primary_key=True))metadata.create_all()class User(object): passclass Group(object): passclass Permission(object): passmapper(User, user_table)mapper(Group, group_table)mapper(Permission, permission_table)if __name__ == '__main__': """ 连接池 """ user_table.delete().execute() user_table.insert().execute(user_name='rick1', password='secret', display_name='rick C') user_table.insert().execute(user_name='rick2', password='secret', display_name='rick C') result = user_table.select().execute() for row in result: print(row) result = user_table.select().execute() row = result.fetchone() print(row['user_name']) """ 改变session """ print("##############################") Session = sessionmaker() session = Session() query = session.query(User) print("User列表:",list(query)) for user in query: print("用户名称:"+user.user_name) for user in query.filter(User.user_name.like("rick%")): print('({0}, {1}, {2})'.format(user.id, user.user_name, user.created)) newuser = User() newuser.user_name = 'yoshiya' newuser.password = 'hoge' session.add(newuser) session.commit() print("#################") # auto flush for user in query: print(user.user_name)
结果如图:
数据库引擎:
from sqlalchemy import *from datetime import datetimefrom sqlalchemy.orm import *import loggingif __name__ == '__main__': settings = { 'echo': True, 'echo_pool': True, 'encoding': 'utf-8', 'pool_size': 128, 'strategy': 'threadlocal' } url = "mysql+pymysql://root:123456@localhost/SQLAlchemySample" engine = create_engine(url, **settings) handler= logging.FileHandler('sqlalchemy.log') handler.level = logging.DEBUG logging.getLogger('sqlalchemy.engine').addHandler(handler) logging.getLogger('sqlalchemy.pool').addHandler(handler) #logging.getLogger('sqlalchemy.orm').addHandler(handler) conn = engine.connect() result = conn.execute('select user_name from tf_user') for r in result: print(r) conn.close()
DML
import sqlalchemy as safrom sqlalchemy import MetaData, Table, Column, Integer, String, ForeignKey, intersectfrom sqlalchemy import create_engine, bindparamif __name__ == '__main__': """1.定义元信息,绑定到引擎""" metadata = MetaData() # 引擎绑定 engine = create_engine('mysql+pymysql://root:123456@localhost/SQLAlchemySample') metadata.bind = engine """2.创建表格,初始化数据库""" simple_table = Table('simple', metadata, Column('id', Integer, primary_key=True), Column('col1', String(20)) ) second_table = Table('second', metadata, Column('id', Integer, primary_key=True), Column('simple_id', Integer, ForeignKey('simple.id'), primary_key=True), ) stmt = simple_table.insert() print("stmt:",stmt) print("params:",stmt.compile().params) simple_table.delete(bind=engine).execute() # 创建一个表 #simple_table.create(bind=engine) #second_table.create(bind=engine) engine.execute(stmt, col1='Foo') stmt = simple_table.insert(values=dict(col1='new data')) stmt.execute() print(stmt.compile().params) # multi insert , stmt -> metadata -> engine stmt.execute([dict(col1='1'), dict(col1='2'), dict(col1='3')]) # 更新 stmt = simple_table.update( whereclause="id=2", values=dict(col1='update data')) print(stmt) #stmt.execute() # 删除 stmt = simple_table.delete(whereclause="id='18'") print(stmt) #stmt.execute() # select #stmt = simple_table.select(whereclause='id="8"') print('============================') stmt = simple_table.select(simple_table.c.id=='7') print(stmt) print(stmt.execute().fetchone()) stmt = simple_table.select(simple_table.c.col1!='update data') print(stmt.execute().fetchall()) print(stmt.execute().rowcount) #绑定参数 print('============================') stmt = simple_table.select(whereclause=simple_table.c.id==bindparam('id')) print(stmt.execute(id=6).fetchone()) stmt = simple_table.select(group_by=[simple_table.c.col1]) print(stmt.execute().fetchall()) print('============================') #连接 from_obj = simple_table.join(second_table) #from_obj = simple_table.outerjoin(second_table) q = simple_table.select().select_from(from_obj).where(simple_table.c.id == second_table.c.simple_id) print(q.column('second.simple_id')) print(q.execute().fetchall()) #设置操作 print('============================') q1 = simple_table.select(simple_table.c.id > 1) q2 = simple_table.select(simple_table.c.id < 7) print(q1.execute().fetchall()) print(q2.execute().fetchall()) q = intersect(q1, q2) print(q)
如图:
0 0
- Python的ORM框架SQLAlchemy使用入门(二)【连接MySql数据库】
- Python的ORM框架SQLAlchemy使用入门(二)【连接MySql数据库】
- Python的ORM框架SQLAlchemy使用入门(一)
- Python的ORM框架SQLAlchemy使用入门(三)
- Python的数据库ORM框架:SQLAlchemy
- Python的数据库ORM框架:SQLAlchemy
- Python的数据库ORM框架:SQLAlchemy
- Python的数据库ORM框架:SQLAlchemy
- 使用Python数据库ORM SQLAlchemy
- Python的ORM框架SQLAlchemy
- Python的ORM框架-SQLAlchemy
- python sqlalchemy orm框架使用教程
- python ORM链接数据库-sqlalchemy库的使用(一)
- Python SQLAlchemy MySQL ORM
- Python的ORM框架Peewee使用入门(二)
- Python的ORM框架SQLAlchemy入门教程
- 【python学习笔记】python使用sqlalchemy连接mysql数据库
- Python SQLalchemy ORM的使用(一)
- Java加密算法---MD5
- 例题 2.8 快速排序
- could not start running tests with command 'pybot.bat'
- python 中的map,imap,startmap
- <sdut-ACM>顺序表应用2:多余元素删除之建表算法
- Python的ORM框架SQLAlchemy使用入门(二)【连接MySql数据库】
- 多线程编程-互斥锁
- 04:字符串分割 substr()
- Android PhotoView :一款扩展自ImageView 支持通过单点/多点触摸来进行图片缩放的智能控件。
- 常见的Hash算法
- jQuery中json对象与json字符串互换
- 打乱数组
- java —equals 与==
- 有心之人的面试总结