在世纪业务中,会产生大量的数据,数据库可以将这些数据永久地保存起来。在Python中针对Mysql可编程的库:pymysql,mysqlclient
pymysql
安装 pip install pymysql
from pymysql import connet
conn=Connect(
host="127.0.0.1",
user="root",
password="root",
port=3306,
db='pdb',
charset='utf8',
autocommit=False,
cursorclass=Cursor
)
#'%s,%s'(1,2)
#'%(name)s,%(age)s,%salary)s'%{'name':'ll','age':'20','salary':9000}
#测试Mysql的CURD操作
cursor=conn.cursor() #cursorclass 指定的游标类型,默认为Cursor类
#sql是mysql有效的SQL语句,是str类型
#args是tuple或list类型,表示 sql 语句的%s 占位符的替换值,如果是多个%s,则从左到有依次替换
#args是dict类型,表示sql语句%(name)s,dict的key和占位符的name一一对应
cursor.execute() #返回影戏那个的记录行数
#cursor.rowcount 影响的记录行数
#获取select 语句中的数据结果
cursor.fetchall() #获取所有行的记录
cursor.fetone() #获取第一行记录
cursor.close() #关闭游标
#提交事务
conn.commit()#conn.rollback()
conn.close() #数据库连接关闭
#conn连接对象支持上下文的使用
#上下文管理器:
#with关键字
#使用with关键字的对象,对象的类必须实现__enter__和__exit__()两个函数
#__enter__(self)-->返回对象可以由as关键字接收
#__exit__(self,excpt_type,except_val,execpt_tb) ->None
#当千obj进入上下文是,会调用的__enter__方法,当退出上下文是,会调用对象的__exit__方法。
#在__exit()__方法中,可以判断except_type 是否None,如不为None,则表示代码执行过程存在异常
#此方法如果返回True,则表示异常不会抛出上一层程序(解释器),如果返回False,则向上层抛出异常,默认为False
例子
create_sql="""
create table A(
year varchar(4),
month varchar (2),
amount float (5,1)
)
"""
insert_sql="""
insert into A values
('1991','1',1.1),
('1991','2',1.2),
('1992','1',2.1),
('1992','2',2.2)
"""
select_sql=f"""
select * from {'A'}
"""
with conn as c:
# c.execute('drop table if exists A')
# c.execute(create_sql)
# c.execute(insert_sql)
c.execute(select_sql)
for row in c.fetchall():
print(row)
c.close()
print("--退出上下文---")
conn.close()