sqlalchemy最新权威详细教程

sqlalchemy最新权威详细教程

ID:16095420

大小:384.50 KB

页数:63页

时间:2018-08-07

sqlalchemy最新权威详细教程_第1页
sqlalchemy最新权威详细教程_第2页
sqlalchemy最新权威详细教程_第3页
sqlalchemy最新权威详细教程_第4页
sqlalchemy最新权威详细教程_第5页
资源描述:

《sqlalchemy最新权威详细教程》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、SQLAlchemy最新权威详细教程前言:最近开始学习SQLAlchemy,本教程是其官方文档以及在读英文版的翻译加一些自己的理解和总结1什么是SQLAlchemy?它是给mysql,oracle,sqlite等关系型数据库的python接口,不需要大幅修改原有的python代码,它已经包含了SQL表达式语言和ORM,看一些例子:sql=”INSERTINTOuser(user_name,password)VALUES(%s,%s)”cursor=conn.cursor()cursor.execute(sql,(‘d

2、ongwm’,‘testpass’))以上是一个常用的mysql的SQL语句,但是冗长也容易出错,并且可能导致安全问题(因为是字符串的语句,会存在SQL注入),并且代码不跨平台,在不同数据库软件的语句不同(以下是一个 Oracle例子),不具备客移植性:sql=”INSERTINTOuser(user_name,password)VALUES(:1,:2)”cursor=conn.cursor()cursor.execute(sql,‘dongwm’,‘testpass’)而在SQLAlchemy里只需要这样写:statement=user_table.in

3、sert(user_name=’rick’,password=’parrot’)statement.execute() #护略是什么数据库环境SQLAlchemy还能让你写出很pythonic的语句:statement=user_table.select(and_(user_table.c.created>=date(2007,1,1),user_table.c.created

4、它你设置的数据库类型是基于内存的sqliteuser_table=Table( #创建一个表‘tf_user’,metadata,Column(‘id’,Integer,primary_key=True), #一些字段,假设你懂SQL,那么以下的字段很好理解Column(‘user_name’,Unicode(16),unique=True,nullable=False),Column(‘email_address’,Unicode(255),unique=True,nullable=False),Column(‘password’,Unicode(40),

5、nullable=False),Column(‘first_name’,Unicode(255),default=”),Column(‘last_name’,Unicode(255),default=”),Column(‘created’,DateTime,default=datetime.now))users_table=Table(‘users’,metadata,autoload=True)#假设table已经存在.就不需要指定字段,只是加个autoload=TrueclassUser(object):pass #虽然SQLAlchemy强大,但是插入

6、更新还是需要手动指定,可以使用ORM,方法就是:设定一个类,定义一个表,把表映射到类里面mapper(User,user_table)下面是一个完整ORM的例子:Sourcecode   fromsqlalchemy.ormimportmapper,sessionmaker#sessionmaker()函数是最常使用的创建最顶层可用于整个应用Session的方法,Session管理着所有与数据库之间的会话fromdatetimeimportdatetimefromsqlalchemyimportTable,MetaData,Column,ForeignKey

7、,Integer,String,Unicode,DateTime#会SQL的人能理解这些函数吧?engine=create_engine("sqlite:///tutorial.db",echo=True)#创建到数据库的连接,echo=True表示用logging输出调试结果metadata=MetaData()#跟踪表属性user_table=Table(#创建一个表所需的信息:字段,表名等'tf_user',metadata,Column('id',Integer,primary_key=True),Column('user_name',Unicode

8、(16),unique=True,nullable=

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。