SQLAlchemy (一)---创建表、插入数据、查询

一、创建数据库表格

建立Python文件alchemy5.py,代码如下:

#!/usr/bin/ python
#encoding:utf8

from sqlalchemy import *
from sqlalchemy.orm import *
#from sqlalchemy.ext.declarative import declarative_base

#功能:创建数据库表格,初始化数据库

#定义引擎
engine = create_engine('mysql+mysqlconnector://root:111111@localhost:3306/testalchemy')
#绑定元信息
metadata = MetaData(engine)

#创建表格,初始化数据库
user = Table('user', metadata,
    Column('id', Integer, primary_key = True),
    Column('name', String(20)),
    Column('fullname', String(40)))
address = Table('address', metadata, 
    Column('id', Integer, primary_key = True),
    Column('user_id', None, ForeignKey('user.id')), 
    Column('email', String(60), nullable = False),
)
#创建数据表,如果数据表存在则忽视!!!
metadata.create_all(engine)
#获取数据库链接,以备后面使用!!!!!
conn = engine.connect()

结果如图:
SQLAlchemy (一)---创建表、插入数据、查询_第1张图片

二、插入数据

建立Python文件alchemy6.py,代码如下:

#!/usr/bin/ python
#encoding:utf8

from sqlalchemy import *
from sqlalchemy.orm import *
#alchemy5实现创建数据库表格功能
from alchemy5 import *
#############一.以每次插入一条记录的方式向user表插入数据##############
#使用查询
i = user.insert()
#print i
#插入一组数据
u = dict(name='tom', fullname='tom smith')#id从1自动增加
#执行查询,第一个为查询对象,第二个参数为一个插入数据字典,如果插入的是多个对象
#就把对象字典放在列表里边
r1 = conn.execute(i, **u)
#print r1
#返回插入行
print r1.inserted_primary_key
############二.以每次插入多条记录的方式向address表插入数据#############
addr = [{'user_id': 1, 'email': '[email protected]'}, {'user_id': 1,
'email': '[email protected]'}, {'user_id': 2, 'email': '[email protected]'}, 
{'user_id': 2, 'email': '[email protected]'}]
j = address.insert()
r2 = conn.execute(j, addr)

结果如图:

1、user表(插入数据更改过名字)
SQLAlchemy (一)---创建表、插入数据、查询_第2张图片

2、address表
SQLAlchemy (一)---创建表、插入数据、查询_第3张图片

三、查询

1、单个表的查询
建立Python文件alchemy7.py,代码如下:

#!/usr/bin/ python
#encoding:utf8

from sqlalchemy import *
from sqlalchemy.orm import *
#alchemy5实现创建数据库表格功能
from alchemy5 import *
#alchemy6实现插入数据
#from alchemy6 import *

#功能:实现单个表的查询

print '#'*15
s1 = select([user])  #查询全表
print s1
r1 = conn.execute(s1) #执行查询

print r1.fetchall() #返回查询结果!!!!!
# 只要 r.fetchall() 之后,就会自动关闭 ResultProxy 对象
print '#'*15
#user.c表 user 的字段column对象
s2 = select([user.c.name, user.c.fullname]) #查询部分
print s2
r2 = conn.execute(s2) #执行查询

#r1.fetchall() #返回查询结果!!!!!

print '#'*15

结果:
SQLAlchemy (一)---创建表、插入数据、查询_第4张图片

2、两个表的查询

建立Python文件alchemy8.py,代码如下:

#!/usr/bin/ python
#encoding:utf8

from sqlalchemy import *
from sqlalchemy.orm import *
#alchemy5实现创建数据库表格功能
from alchemy5 import *

#功能:实现同时对两个表的查询

print '#'*15
s = select([user.c.name, address.c.user_id]).where(user.c.id == address.c.user_id)
print s
r = conn.execute(s) #执行查询
result = r.fetchall() #返回查询结果!!!!!
print result
print '#'*15

结果:
SQLAlchemy (一)---创建表、插入数据、查询_第5张图片

你可能感兴趣的:(数据库)