1)import pymysql
2)创建连接:
conn = pymysql.connect(user='root',
password='682240',
host='localhost',
port=3306,
db=db_name,
charset='utf8'
)
3)创建游标:
游标:数据库和python信息交互的中间件
# 创建游标,并选择参数cursor设置返回数据为字典对象
cursor = conn.cursor( cursor = pymysql.cursors.DictCursor )
4)准备sql语句:
sql_select = 'select * from beauty limit %s,%s'
5)执行sql语句:
cursor.execute(sql_select,( offset, page_size ))
execute()的第二个参数为元组类型,作用是传递参数给sql语句中的 %s
6)提交事务:
只是查询数据的话不用commit()
conn.commit()
7)获取数据:
data = cursor.fetchone() # 得到游标中的第一行数据
data2 = cursor.fetchall() # 得到游标中的全部数据
8)将数据迭代出来:
[print(i) for i in data]
9)关闭连接
cursor.close()
conn.close()
ORM的操作,使用SQLAlchemy创建新表:
连接数据库:
from sqlalchemy import create_engine
engine=create_engine('mysql+pymysql://root:682240@localhost:3306/practice?charset=utf8') # 建立连接
创建表:
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Column,Integer,String,Boolean,DateTime
Base = declarative_base() # 创建模型的基类
class News(Base):
__tablename__ = 'news' # 表名为news
# 字段
id = Column(Integer, primary_key=True)
title = Column(String(200), nullable=False)
content = Column(String(2000), nullable=False)
types = Column(String(10), nullable=False)
image = Column(String(300), )
author= Column(String(10), )
view_count = Column(Integer)
created_at = Column(DateTime)
is_valid = Column(Boolean)
if __name__ == '__main__':
News.metadata.create_all(engine) # 创建表
操作表:
from sqlalchemy.orm import Session
class OrmTest(object):
def __init__(self):
self.session = Session(engine)
def add_one(self):
new_obj = News(
title='标题5',
content='内容5',
types='happy',
author='wcc',
view_count=1,
is_valid=True,
)
self.session.add(new_obj)
self.session.commit()
return new_obj
def get_one(self):
return self.session.query(News).get(1) # id=1
def get_more(self):
return self.session.query(News).filter_by(view_count=1)
def update_data(self):
data = self.session.query(News).get(1)
data.title = '修改后的标题'
self.session.add(data)
self.session.commit()
def delete_data(self):
data = self.session.query(News).get(2)
self.session.delete(data)
self.session.commit()
def main():
obj = OrmTest()
# rest = obj.add_one()
# print(rest.id)
# obj.update_data()
# obj.delete_data()
# rest2 = obj.get_one()
# if rest2:
# print(rest2.id,rest2.title)
# else:
# print("Not exist.")
data = obj.get_more()
print('查询出了', data.count(), '条数据')
for i in data:
print(i.id, i.title, i.content, i.is_valid)
ORM的操作,使用SQLAlchemy操控已经存在的表
from sqlalchemy import create_engine
from sqlalchemy.ext.automap import automap_base
from sqlalchemy.orm import Session
‘’‘连接数据库’’’
engine = create_engine('mysql+pymysql://root:682240@localhost/practice')
'''映射到表boys'''
Base = automap_base()
Base.prepare(engine, reflect=True)
Boys = Base.classes.boys
session = Session(engine) # 设置session中间件
# 更新值
ret = session.query(Boys).get(1)
ret.boyName = '吴长城'
session.add(ret)
session.commit()
ret_more = session.query(Boys).filter(id != 0) # 取值
for data in ret_more:
print(data.boyName)