SQLAlchemy
2020-12-21 00:13:38    5    0    0
starryoo

 SQLAlchemy 说麻烦不麻烦 说不麻烦也很麻烦 (其实还不如直接用sqlite3库)

但是考虑到兼容性或者后期要换数据库 还是上了

首先是麻烦的库

sqlalchemy有一堆的库 还要一个一个导入

from sqlalchemy import Column, String, create_engine, exists
from sqlalchemy.orm import sessionmaker
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Column, Integer, String

 然后是配置信息

engine = create_engine("Database_urls", echo = True)
Base = declarative_base()#生成基类
设置库类
class User(Base):
    __tablename__ = 'users' 
    id = Column(Integer, primary_key=True) 
    name = Column(String(10)) 
    password = Column(String(10))

 

Database_urls 的组成形式:
dialect+driver://username:password@host:port/database
举例:

  1. mysql://root:123456@localhost:3306/test
  2. postgresql://scott:tiger@localhost/mydatabase
  3. oracle://scott:tiger@127.0.0.1:1521/sidname
  4. sqlite:///foo.db
创建数据库(如果没有的话)
<code class="python">User.metadata.create_all(engine)</code>

 创建会话

Session = sessionmaker(bind=engine)
session = Session()

 插入数据

ed_user = User(id=1, name='xiexiaolu', password='dianwo')
session.add(ed_user)
session.commit()​#记得提交

 查询操作

user=session.query(User).filter(User.id ==1).one()
print(user.name)
print(user.password)​

 其中还有or_()和and_()等用法

users = session.query(User).all()# 返回数据表所有数据​

查询值/结果是否存在表中

假如查询:查询人物表是否用jack

笨办法:

person_obj=session.query(Person).filter(Person.name=='jack')
print (person_obj.count())

高级方法

from sqlalchemy.sql import exists

print session.query(exists().where(Person.name== 'jack')).scalar()

# 返回的结果是True或False​

修改数据

# 在会话的基础上执行sql语句
session.execute('update addresses set user_id = 1 where id = 2') session.commit() # 使用映射类成员变量的数据
session.query(Address).filter(Address.id == 2).update({"user_id": 1})



 
 
 

 

上一篇: sqlite3 short api

下一篇: python-opencv

5 人读过
立即登录, 发表评论.
没有帐号? 立即注册
0 条评论
文档导航