今日遇到问题:
Python操作MySQL数据库的时候能够能够连接到数据库。但是insert和update的时候却存储不了数据进数据库。最后解决办法是把数据先存储为一个csv文件,之后再直接导入数据库中。
今天这里就记录一下连接数据库和操作数据库的方法。
python中操作MySQL是我库主要有两种:PyMySQL和MySQLdb。两者的使用方法基本一致,唯一区别在于,PyMySQL支持python3,而MySQLdb不支持。
1、连接方法
PyMySQL库使用connect函数连接数据库,connect函数的基本语法如下:
pymysql.connect(host,port,user,passwd,db,charset,connect_timeout,use_unicode)
参数说明:
参数名称 | 说明 |
---|---|
host | 接收str。表示数据库地址,本地地址通常为127.0.0.1。默认为none |
port | 接收str。表示数据库端口,通常为3306。默认为0 |
user | 表示用户名,管理员用户为root。默认为none |
passwd | 接收str。表示数据库密码。默认为none |
db | 接收str。表示数据库名。默认值 |
charset | 接收str。表示插入数据库时的编码。默认为none |
connect_timeout | 接收int。表示连接超时时间,以秒为 单位。默认为10 |
use_unicode | 接收str。表示结果以unicode字符串的格式返回。默认为none |
注意:使用connect函数时可以不加参数名,但参数的位置需要对应,分别是主机、用户、密码和初始连接的数据库名,且不能互换位置,通常更推荐带参数名的连接方式
应用实例:
importPymysql
#使用参数名创建连接
conn = pymysql.connect (host='127.0.0.1', port=3306, user='root'passwd='root', db='test', charset='utf8',
connect_timeout=1000)
#创建游标
cursor=conn.cursor ()
#创建表
sql='''create table if not exists class (id int(10) primary key auto_increment,name varchar (20)not null,text varchar (20) not null)'''
cursor.execute (sql) #执行创建表的SQI语句
cursor.execute('show tables') # 查看创建的表