以前都是通过sql语句操作数据库,通过orm映射操作数据库就更简单了。
from sqlalchemy import create_engine
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Column, Integer, String,ForeignKey
from sqlalchemy.orm import sessionmaker
#连接数据库
engine=create_engine('mysql+pymysql://root:123@localhost/pydb?charset=utf8')
print(engine)
#设定基类
Base = declarative_base()
Session=sessionmaker(bind=engine)
#数据类继承Base
class User(Base):
__tablename__='stedent'
id=Column(Integer,primary_key=True)
name=Column(String(20))
wedding=Column(String(10))
xingzuo=Column(String(10))
job=Column(String(20))
home=Column(String(20))
User.metadata.create_all(engine) #创建表
class OrmTest():
def __init__(self):
self.session=Session()
def add(self):
user=User(
name='汤福平',
wedding='未婚',
xingzuo='巨蟹座',
job='IT研究专家',
home='中国'
)
user2 = User(
name='徐繁韵',
wedding='未婚',
xingzuo='巨蟹座',
job='IT研究专家',
home='中国'
)
#self.session.add(user)
self.session.add_all([user,user2])
self.session.commit()
return user
def get_one(self):
user=self.session.query(User).get(3)
return user
def get_more(self):
users=self.session.query(User).filter_by(name='徐繁韵')
return users
if __name__ == '__main__':
ormTest=OrmTest()
#print(ormTest.add().id)
#print(ormTest.get_one().name if ormTest.get_one() else '数据不存在' )
result=ormTest.get_more()
print(result.count())
# for user in result:
# print(user.home)
print([user.home for user in ormTest.get_more()] if ormTest.get_more() else '数据为空')
print(user.home for user in result)
重点学习,请看官方文档http://docs.sqlalchemy.org/en/latest/