Python的ORM框架SQLAlchemy使用入门(二)【连接MySql数据库】
2017-12-20 18:01
671 查看
连接,增加数据 代码如下:
from sqlalchemy import * from datetime import datetime from sqlalchemy.orm import * metadata = MetaData('mysql+pymysql://root:123456@localhost/SQLAlchemySample') metadata.bind.echo = False user_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): pass class Group(object): pass class Permission(object): pass mapper(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)1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
[/code]
结果如图:
数据库引擎:
from sqlalchemy import * from datetime import datetime from sqlalchemy.orm import * import logging if __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()1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
[/code]
DML
import sqlalchemy as sa from sqlalchemy import MetaData, Table, Column, Integer, String, ForeignKey, intersect from sqlalchemy import create_engine, bindparam if __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)1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
[/code]
如图:
相关文章推荐
- Python的ORM框架SQLAlchemy使用入门(二)【连接MySql数据库】
- Python中使用SQLAlchemy连接Mysql数据库2(多表连接操作)
- Python的ORM框架SQLAlchemy使用入门(三)
- 【python学习笔记】python使用sqlalchemy连接mysql数据库
- python使用sqlalchemy连接mysql数据库
- Python中使用SQLAlchemy连接Mysql数据库3(事务,编码)
- Python的ORM框架SQLAlchemy使用入门(一)
- Python中使用SQLAlchemy连接Mysql数据库(单表操作)
- Python的SQLAlchemy框架使用入门
- Python连接mysql数据库及python使用mysqldb连接数据库教程
- Python的ORM框架SQLAlchemy入门教程
- Python的ORM框架Peewee使用入门(三)
- python SQLAlchemy创建mysql数据库连接
- python使用mysqldb连接mysql数据库
- 使用Python连接MySQL数据库
- python3使用PyMysql连接mysql数据库
- Python的ORM框架SQLAlchemy入门教程
- python 连接MYSQL数据库(入门帖)
- Python的ORM框架Peewee使用入门(一)
- Python ORM框架SQLAlchemy学习笔记之映射类使用实例和Session会话介绍