二数据库进阶sqlalchemy

SQLAlchemy 是python 编程语言下的一款ORM(object relational mapping)框架,对象关系映射。简单的说,ORM将数据库中的表与面向对象语言中的类建立一种对应关系。这样,我们要操作数据库,数据库中的表或者表中的一条记录就可以直接通过操作类或者类实例来完成。

https://www.cnblogs.com/pycode/p/mysql-orm.html

SQLAlchemy本身无法操作数据库,其必须依赖pymysql等第三方插件,才能操作数据库。

 1 MySQL-Python
 2     mysql+mysqldb://<user>:<password>@<host>[:<port>]/<dbname>
 3   
 4 pymysql
 5     mysql+pymysql://<username>:<password>@<host>/<dbname>[?<options>]
 6   
 7 MySQL-Connector
 8     mysql+mysqlconnector://<user>:<password>@<host>[:<port>]/<dbname>
 9   
10 cx_Oracle
11     oracle+cx_oracle://user:pass@host:port/dbname[key=value&key=value...]

举个例子:

conn_string = 'mysql+mysqldb://' + db_user + ':' + db_passwd + '@localhost/kobesystem?charset=utf8'
engine = create_engine(conn_string, encoding='utf-8')

 

sqlalchemy 的使用方法

1 创建表单

from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Column, Integer, String, ForeignKey, UniqueConstraint, Index
from sqlalchemy.orm import sessionmaker, relationship
from sqlalchemy import create_engine

conn_string = 'mysql+mysqldb://' + db_user + ':' + db_passwd + '@localhost/kobesystem?charset=utf8'
engine = create_engine(conn_string, encoding='utf-8')

Base = declarative_base()

class Users(Base):
__tablename__ = 'users'
id = Column(Integer, primary_key=True)
name = Column(String(32))
extra = Column(String(16))

 

1 session.query(User).fiter(User.id == id).delete()

删除符合条件的数据,返回删除的条数,如果没有则返回为0

2 session.bulk_save_objects(list) 

快速插入多条数据

sections = []
 for item in data_json_list:
     section_id = str(uuid.uuid1())
     section_obj = Section(id=section_id)
     section_obj.name = item["name"]
     section_obj.projectId = project_id
     sections.append(section_obj)
     db_session.bulk_save_objects(sections)
     db_session.commit()
    
View Code

3 session.query(Section).filter_by(id=section_id).first()

快速查询,如果存在则返回结果。不存在,则返回None.

posted @ 2018-02-07 15:25  会开车的好厨师  阅读(118)  评论(0)    收藏  举报