数据库服务基于阿里云关系型数据库服务(Relational Database Service,简称RDS),为开发者提供了稳定可靠、可弹性伸缩的在线数据库服务。RDS采用即开即用方式,并提供数据库在线扩容、备份回滚、性能监测及分析功能
TAE Python目前支持使用TAE提供的MySQL数据库服务
1 | import MySQLdb |
1 | conn=MySQLdb.connect() |
MySQLdb提供的connect方法用来和数据库建立连接 返回连接对象.(不需要输入参数)
连接对象方法
方法名 |
描述 |
cursor() |
返回链接的游标对象 |
commit() |
如果支持的话就提交挂起的事务,否则不做任何事 |
rollback() |
会滚挂起的事务 |
close() |
关闭链接之后,链接对象和它的游标均不可用 |
1 2 3 | cursor = conn.cursor() cursor.execute(sql, param) # 执行 sql 语句 result = cursor.fetchall() # 接受返回值 |
首先,我们用使用连接对象获得一个cursor对象,接下来,我们会使用cursor提供的方法来进行工作.这些方法包括两大类:1.执行命令,2.接收返回值
cursor游标对象方法介绍
方法名 |
描述 |
execute(query[, args]) |
执行单条sql语句,接收的参数为sql语句本身和使用的参数列表,返回值为受影响的行数 |
executemany(query, args) |
执行单条sql语句,但是重复执行参数列表里的参数,返回值为受影响的行数 |
callproc(procname[, args]) |
用来执行存储过程,接收的参数为存储过程名和参数列表,返回值为受影响的行数 |
fetchall() |
接收全部的返回结果行 |
fetchmany([size=None]) |
接收size条返回结果行.如果size的值大于返回的结果行的数量,则会返回cursor.arraysize条数据 |
fetchone() |
返回一条结果行 |
close()
|
关闭游标
|
例子:
1 2 3 4 5 | # coding: utf8 import sys import MySQLdb conn = MySQLdb.connect() cursor = conn.cursor() |
1 2 3 4 5 6 7 | <strong>#create table</strong> sql = "" "CREATE TABLE if not exists user_info( id INT NOT NULL PRIMARY KEY AUTO_INCREMENT, name CHAR( 20 ), age INT, sex CHAR( 1 ), income FLOAT |
1 2 3 | )DEFAULT CHARSET=UTF8; "" " cursor.execute(sql) |
1 2 3 | <strong>#INSERT</strong> in_sql = "INSERT INTO user_info(name, age, sex, income) VALUES('%s', '%s', '%s', '%s')" % ( 'Mac' , 20 , 'M' , 2000 ) try : |
1 2 3 4 5 6 7 8 9 | cursor.execute(in_sql) conn.commit() except: conn.rollback() #使用sql语句,这里要接收的参数都用%s占位符.要注意的是,无论你要插入的数据是什么类型,占位符永远都要用%s sql= "insert into user_info (name, age, sex, income) values(%s,%s,%s,%s)" #param应该为tuple或者list param=( 'Macs' , 20 , 'M' , 2000 ) n=cursor.execute(sql,param) #执行,如果成功,n的值为 1 |
#批量插入
1 2 3 4 5 | sql= "insert into user_info values(%s,%s,%s,%s)" #每个值的集合为一个tuple,整个参数集组成一个tuple,或者list param=(( name, age, sex, income),( name2, age2, sex2, income2)) #使用executemany方法来批量的插入数据 n=cursor.executemany(sql,param) |
#查询
1 2 3 | se_sql = "SELECT * FROM user_info WHERE income > '%s'" % ( 1000 ) try : cursor.execute(se_sql) |
1 | results = cursor.fetchall() |
1 | # 查询返回的全部结果.每条结果都是一个tuple类型的数据,这些tuple组成了一个tuple |
1 | print results |
1 2 3 4 5 6 7 8 9 | for row in results: name = row[ 1 ] age = row[ 2 ] sex = row[ 3 ] income = row[ 4 ] print 'name=%s, age=%d, sex=%s, income=%d' % \ (name, age, sex, income) except: print 'Error: unable to fecth data' |
#UPDATE
1 2 3 | up_sql = "UPDATE user_info SET age=age+1 WHERE sex='%c'" % ( 'm' ) try : cursor.execute(up_sql) |
1 2 3 | conn.commit() except: conn.rollback() |
#DELETE
1 2 | de_sql = "DELETE FROM user_info WHERE age>'%d'" % ( 20 ) try : |
1 | cursor.execute(sql) |
1 2 3 4 5 | conn.commit() except: print ' DELETE Error' cursor.close() conn.close() |
下面是创建engine代码片段,具体使用方式请参考完整demo和sqlalchemy官方文档
在Flask中使用flask_sqlalchemy
配置Django的数据源
1 2 3 4 5 6 7 8 9 10 11 12 13 | DATABASES = { 'default' : { 'ENGINE' : 'django.db.backends.mysql' , 'NAME' : 'tae_test' , 'USER' : 'root' , 'PASSWORD' : '123456' , 'HOST' : 'localhost' , 'PORT' : '' , } } //只要将'ENGINE' 选为'django.db.backends.mysql',其他配置可任意填写。 |