最近工作需要sqlalchemy的方式去查询数据库,看了很多网上的教程,发现查询的时候用的是engine.execute(select(表名))的方式去查询,报错,这好像是1.x版本的做法吗?
应该是这样:
from sqlalchemy import *
from sqlalchemy.orm import sessionmaker
# id name sex tel addr salary
def get_con():
engine = create_engine("mysql+pymysql://user:passwd@localhost:3306/dbtest11",
echo=True)
engine.connect()
return engine
def select_data(engine):
metadata = MetaData()
# 创建一个数据表
Employee = Table('employee', metadata,
Column('id', Integer),
Column('name', String),
Column('sex', String),
Column('tel', String),
Column('addr', String),
Column('salary', Double)
)
# 查询数据
SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine)
session = SessionLocal()
# 查询所有用户
emps = session.execute(select(Employee))
session.close()
print(emps)
for emp in emps:
print(emp)
#
# # 查询特定用户
# user = session.execute(select(Employee).where(Employee.name == '李四')).scalars().first()
# if user:
# print(user.name, user.age)
def main():
engine = get_con()
print(engine)
select_data(engine)
if __name__ == '__main__':
main()
print('ok')