
环境安装
安装MySQL:
sudo apt-get install mysql-server
安装MySQLdb模块:
sudo apt-get install python-mysqldb
测试是否安装成功:
import MySQLdb
MySQL建立数据库
进入MySQL:
mysql -u root -p
进入MySQL并打开补全:
mysql -u USER -p --local-infile=1 --auto-rehash
建立一个数据库:
create database testdb character set utf8;
调用已经建立的数据库:
use testdb;
建立一个数据表:
create table users
(id int(2) not null primary key auto_increment,
username varchar(40),
password text,email text)
default charset=utf8;
显示表格:
show tables;
显示表格结构:
desc users;
表格中插入数据:
insert into
users(username,password,email)
values("qiwsir","123123","qiwsir@gmail.com");
查询表格内容:
select * from users;
Python操作数据库
连接数据库:
conn =
MySQLdb.connect
(host="localhost",user="root",
passwd="123123",db="qiwsirtest",charset="utf8")
用游标(指针)cursor的方式操作数据库:
cur = conn.cursor()
在表中插入一条记录:
cur.execute("insert into
users (username,password,email)
values (%s,%s,%s)",("python","123456","python@gmail.com"))
使插入的记录生效,提交:
conn.commit()
同时插入多条记录:
cur.executemany("insert into
users (username,password,email)
values (%s,%s,%s)",
(("google","111222","g@gmail.com"),
("facebook","222333","f@face.book"),
("github","333444","git@hub.com"),
("docker","444555","doc@ker.com")))
要记得提交生效
查询数据库:
cur.execute("select * from users")
上述操作只是得到结果的指针,想要显示查询结果,可以用到以下方法:
- fetchall(self):接收全部的返回结果行.
- fwetchmany(size=None):接收size条返回结果行.如果size的值大于返回的结果行的数量,则会返回cursor.arraysize条数据.
- fetchone():返回一条结果行.
- scroll(value,mode=’relative’):移动指针到某一行.如果mode=’relative’,则表示从当前所在行移动value条,如果mode=’absolute’,则表示从结果集的第一行移动value条.
python的MySQLdb指针提供了一个参数,可以实现将读取到的数据变成字典形式:
cur = conn.cursor(cursorclass=MySQLdb.cursors.DictCursor)
更新数据库:
cur.execute("update users set username=%s where id=2",("mypython"))
如果再下述连接数据库的语句中,如果没有指定具体的数据库,则连接到MySQL:
conn = MySQLdb.connect
(host="localhost",
user="root",passwd="123123",
db="qiwsirtest",charset="utf8")
然后可以通过用conn.select_db()选择要操作的数据库:
conn.select_db("testdb")
不选数据库,而是要新建一个数据库,如下所示:
cur = conn.cursor()
cur.execute("create database newtest")
建立数据库之后,就可以选择这个数据库,然后在这个数据库中建立一个数据表:
cur.execute("create table newusers
(id int(2) primary key auto_increment,
username varchar(20), age int(2), email text)")
当进行完有关数据操作之后,最后要做的就是关闭游标(指针)和连接。用如下命令实现:
cur.close()
conn.close()