时间:2021-07-01 10:21:17 帮助过:30人阅读
1 #!/usr/bin/env python 2 # -*- coding:utf-8 -*- 3 4 from sqlalchemy import create_engine 5 6 7 engine = create_engine("mysql+mysqldb://root:123@127.0.0.1:3306/s11", max_overflow=5) 8 9 10 # 事务操作 11 with engine.begin() as conn: 12 conn.execute("insert into table (x, y, z) values (1, 2, 3)") 13 conn.execute("my_special_procedure(5)") 14 15 16 conn = engine.connect() 17 # 事务操作 18 with conn.begin(): 19 conn.execute("some statement", {‘x‘:5, ‘y‘:10})事务
1 ‘‘‘ 2 使用 Schema Type/SQL Expression Language/Engine/ConnectionPooling/Dialect 进行数据库操作。Engine使用Schema Type创建一个特定的结构对象,之后通过SQL Expression Language将该对象转换成SQL语句,然后通过 ConnectionPooling 连接数据库,再然后通过 Dialect 执行SQL,并获取结果。 3 ‘‘‘ 4 5 6 #!/usr/bin/env python 7 # -*- coding:utf-8 -*- 8 9 from sqlalchemy import create_engine, Table, Column, Integer, String, MetaData, ForeignKey 10 11 metadata = MetaData() 12 13 user = Table(‘user‘, metadata, 14 Column(‘id‘, Integer, primary_key=True), 15 Column(‘name‘, String(20)), 16 ) 17 18 color = Table(‘color‘, metadata, 19 Column(‘id‘, Integer, primary_key=True), 20 Column(‘name‘, String(20)), 21 ) 22 engine = create_engine("mysql+mysqldb://root:123@127.0.0.1:3306/s11", max_overflow=5) 23 24 metadata.create_all(engine) 25 # metadata.clear() 26 # metadata.remove()2
#!/usr/bin/env python # -*- coding:utf-8 -*- from sqlalchemy import create_engine, Table, Column, Integer, String, MetaData, ForeignKey metadata = MetaData() user = Table(‘user‘, metadata, Column(‘id‘, Integer, primary_key=True), Column(‘name‘, String(20)), ) color = Table(‘color‘, metadata, Column(‘id‘, Integer, primary_key=True), Column(‘name‘, String(20)), ) engine = create_engine("mysql+mysqldb://root:123@127.0.0.1:3306/s11", max_overflow=5) conn = engine.connect() # 创建SQL语句,INSERT INTO "user" (id, name) VALUES (:id, :name) conn.execute(user.insert(),{‘id‘:7,‘name‘:‘seven‘}) conn.close() # sql = user.insert().values(id=123, name=‘wu‘) # conn.execute(sql) # conn.close() # sql = user.delete().where(user.c.id > 1) # sql = user.update().values(fullname=user.c.name) # sql = user.update().where(user.c.name == ‘jack‘).values(name=‘ed‘) # sql = select([user, ]) # sql = select([user.c.id, ]) # sql = select([user.c.name, color.c.name]).where(user.c.id==color.c.id) # sql = select([user.c.name]).order_by(user.c.name) # sql = select([user]).group_by(user.c.name) # result = conn.execute(sql) # print result.fetchall() # conn.close() 更多内容详见: http://www.jianshu.com/p/e6bba189fcbd http://docs.sqlalchemy.org/en/latest/core/expression_api.html增删改查
注:SQLAlchemy无法修改表结构,如果需要可以使用SQLAlchemy开发者开源的另外一个软件Alembic来完成。
1 #!/usr/bin/env python 2 # -*- coding:utf-8 -*- 3 4 from sqlalchemy.ext.declarative import declarative_base 5 from sqlalchemy import Column, Integer, String 6 from sqlalchemy.orm import sessionmaker 7 from sqlalchemy import create_engine 8 9 engine = create_engine("mysql+mysqldb://root:123@127.0.0.1:3306/s11", max_overflow=5) 10 11 Base = declarative_base() 12 13 14 class User(Base): 15 __tablename__ = ‘users‘ 16 id = Column(Integer, primary_key=True) 17 name = Column(String(50)) 18 19 # 寻找Base的所有子类,按照子类的结构在数据库中生成对应的数据表信息 20 # Base.metadata.create_all(engine) 21 22 Session = sessionmaker(bind=engine) 23 session = Session() 24 25 26 # ########## 增 ########## 27 # u = User(id=2, name=‘sb‘) 28 # session.add(u) 29 # session.add_all([ 30 # User(id=3, name=‘sb‘), 31 # User(id=4, name=‘sb‘) 32 # ]) 33 # session.commit() 34 35 # ########## 删除 ########## 36 # session.query(User).filter(User.id > 2).delete() 37 # session.commit() 38 39 # ########## 修改 ########## 40 # session.query(User).filter(User.id > 2).update({‘cluster_id‘ : 0}) 41 # session.commit() 42 # ########## 查 ########## 43 # ret = session.query(User).filter_by(name=‘sb‘).first() 44 45 # ret = session.query(User).filter_by(name=‘sb‘).all() 46 # print ret 47 48 # ret = session.query(User).filter(User.name.in_([‘sb‘,‘bb‘])).all() 49 # print ret 50 51 # ret = session.query(User.name.label(‘name_label‘)).all() 52 # print ret,type(ret) 53 54 # ret = session.query(User).order_by(User.id).all() 55 # print ret 56 57 # ret = session.query(User).order_by(User.id)[1:3] 58 # print ret 59 # session.commit()使用 ORM/Schema Type/SQL Expression Language/Engine/ConnectionPooling/Dialect 所有组件对数据进行操作。根据类创建对象,对象转换成SQL,执行SQL。
SQLAlchemy
标签:closed image root type 实现 mysql 信息 target port