- 在Python3当中我们使用pymysql来操作数据库。
(1)链接对象API:
classpymysql.connections.
Connection
(host=None, user=None, password='', database=None, port=0, unix_socket=None, charset='', sql_mode=None, read_default_file=None, conv=None, use_unicode=None, client_flag=0, cursorclass=<class 'pymysql.cursors.Cursor'>, init_command=None, connect_timeout=10, ssl=None, read_default_group=None, compress=None, named_pipe=None, no_delay=None, autocommit=False, db=None, passwd=None, local_infile=False, max_allowed_packet=16777216, defer_connect=False, auth_plugin_map={}, read_timeout=None, write_timeout=None, bind_address=None, binary_prefix=False)
使用MySQL服务器表示一个套接字,创建类实例的方法是调用connect(),将创建一个MySQL链接对象,建立连接可使用的参数如下:
host:数据库服务器主机名可以是IP或域名
user:用户登陆名
password:用户名密码
database:要使用的数据库名
port:端口号默认3306
bind_address:多网口是绑定网络接口,可以是主机名或IP
unix_socket:指定套接字链接
read_timeout:读取连接的超时时间
write_timeout:写入连接的超时时间
carset:指定字符集
sql_mode:指定SQL_MODE
read_defautl_file:指定my.cnf配置文件读取参数
init_command:建立连接时运行的初始SQL语句
链接对象使用的方法:
conn.close() 关闭链接
conn.commit() 提交更改到数据库服务器
conn.cursor(cursor=None) 创建一个新的游标来执行查询,cursor指定游标类型:Cursor、SSCursor、DictCursor或SSDictCursor,没有指定即使用光标
conn.open 如果链接处于打开状态则返回true
conn.ping(reconnect=True) 检查服务器是否存在,reconnect为True时重新链接
conn.rellback() 回滚当前事务
(2)游标对象API
class pymysql.cursors.Cursor(connection) :创建与数据库交换的对象,对象表示数据库游标,用于管理提取操作的上下文
游标的方法:
cursor.callproc(procname) 查看数据库存储过程
cursor.close() 关闭游标
cursor.execute(query,args=None) 执行查询,query查询参数为字符串,args可以是元组,列表或字典,用于查询的参数,返回类型为INT
cursor.executemany(query,seq_of_parameters) 多次查询返回结果
cursor.fetchall() 获取所有行
cursor.fetchmany(size=None) 获取指定的行数
cursor.fetchone() 获取下一行
cursor.max_stmt_length=1024000 executemany()生成的最大语句大小
cursor.mogrify(query,args=None) 通过调用execute()方法返回发送到数据库的字符串
(3)其它对象API
class pymysql.cursors.SSCursor(connection) :用于返回大量数据的查询
class pymysql.cursors.DictCursor(connection) :用于将结果作为字典返回的游标
class pymysql.cursors.SSDictCursor(connection) :用于无缓冲的游标,它将结果作为字典返回
#导入pymysql import pymysql #实例化链接对象,作用是建立Mysql数据库链接 conn = pymysql.connect('localhost','root','Password@2020','test2') #设定游标对象,作用是用于与数据库进行交互操作的对象。 cusor = conn.cursor() #发送sql语句 cusor.execute("select version();") #提交更改以稳定存储 conn.commit() #获取内容 print(cusor.fetchall())
- pymysql 新建表
#导入pymysql import pymysql conn = pymysql.connect( host = 'localhost', user = 'root', password = 'Password@2020', database = 'test2' ) cusor = conn.cursor() create = 'create table information_test (id int(255), name varchar(255),url varchar(255));' cusor.execute(create)
- pymysql 插入单数据
#导入pymysql import pymysql conn = pymysql.connect( host = 'localhost', user = 'root', password = 'Password@2020', database = 'test2' ) cusor = conn.cursor() #insert = 'insert into information_test values(%s,%s,%s) %(i,key,value)' insert = "insert into information_test values (0,'a','b')" cusor.execute(insert) #提交更改 conn.commit() conn.close()
- 插入字典类型数据
#导入pymysql import pymysql conn = pymysql.connect( host = 'localhost', user = 'root', password = 'Password@2020', database = 'test2' ) cusor = conn.cursor() dict = {'aaron':'www.baidu.com', 'vicent':'www.baidu2.com', 'back':'www.baidu3.com' } i = 1 for key,value in dict.items(): insert = "insert into information_test values(%s,'%s','%s')" %(int(i),key,value) cusor.execute(insert) i += 1 #提交更改 conn.commit() conn.close() ------------------------------------------------------------------------ mysql> select * from information_test; +------+--------+----------------+ | id | name | url | +------+--------+----------------+ | 0 | a | b | | 1 | aaron | www.baidu.com | | 2 | vicent | www.baidu2.com | | 3 | back | www.baidu3.com | +------+--------+----------------+ 4 rows in set (0.00 sec)