MySQLdb中主要的类有:connect , cursors, excute,executemany
处理过程:先基于connect类创建连接,实例化出一个连接对象,基于cursors类创建游标,游标相当于打开文件时候的指针,基于游标将请求发送到服务器端,服务器端基于游标的某个方法接收此请求,服务器端处理完请求后,关闭游标,最后关闭连接。
示例:将某个有规律的文件按行写入数据库
环境:centos7
1.首先安装数据库,并创建mydb库
yum install -y mariadb-server
systemctl start mariadb.service ///启动服务
MariaDB [mydb]> GRANT ALL ON *.* TO 'myuser'@'127.0.0.1' IDENTIFIED BY 'mypass';
MariaDB [mydb]> GRANT ALL ON *.* TO 'hiuser'@'127.0.0.1' IDENTIFIED BY 'mypass';
MariaDB [mydb]> FLUSH PRIVILEGES;
2.编辑文件
vim mysql_conn.py
#!/usr/bin/env python
import MySQLdb as mysql ///导入MySQLdb库,别名设置为mysql
conn = mysql.connect() ///基于connect类创建连接
conn = mysql.connect(host='127.0.0.1',user='hiuser',passwd='mypass',db='mydb') ///连接数据库mydb
cur = conn.cursor() ///创建游标实例
f1 = open('/etc/passwd','r') ///打开文件
f1.seek(0) ///我习惯将文件指针指向最开始的地方,虽然看起来没什么用。。。。
cur.execute('create table mydb.t9(username varchar(30),passwd char(10),uid varchar(20),gid varchar(20),groupname varchar(130),homedir varchar(30),shell varchar(30))') ///创建表t9
for i in f1:
l1 = i.split(':') ///将字符串i直接转换为列表l1
sqlins = 'insert into t9 values(%s,%s,%s,%s,%s,%s,%s)' ///将插入命令写入一个字符串中
# cur.execute('insert into t9 values(%s,%s, %s, %s,%s, %s,%s)',l1) ///向表中插入字段,%s是占位符
cur.execute(sqlins,l1) ///执行插入语句,将列表l1写入t9中
conn.commit() ///这步很重要,如果不提交,最后就不会生效,
cur.execute('select * from t9')
cur.fetchall() ///获取上面查询所得的结果
cur.close() ///关闭游标
conn.close() ///关闭连接
f1.close() ///关闭文件
3.执行文件
chmod +x mysql_conn.py
./mysql_conn.py
4.去数据库查询结果,如图:
Author:网名为什么那么长