py 操作Mysql数据库

78 阅读2分钟

                                                py 操作Mysql数据库

1、linux下安装pymysql
pip install pymysql

2、数据表结构
CREATE TABLE `test_coin` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键自增',
`uid` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '用户ID',
`create_user` int(11) NOT NULL DEFAULT '0' COMMENT '创建人',
`amount` decimal(18,2) unsigned NOT NULL DEFAULT '0.00' COMMENT '金额',
`create_time` int(10) NOT NULL DEFAULT '0' COMMENT '创建时间',
`modify_time` int(10) NOT NULL DEFAULT '0' COMMENT '修改时间',
PRIMARY KEY (`id`),
KEY `uid` (`uid`),
KEY `order_id` (`amount`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COMMENT='用户金额表';

3、conn.py文件

#coding:utf-8
import pymysql
import time

#mysql数据库属性
host = '127.0.0.1'
port = '3306'
username = 'root'
password = '123456'
database = 'py_test'

#[1]测试数据库连接
def connMysql(sql):
#打开数据库链接
db = pymysql.connect(host, username, password, database)
#使用cursor()方法创建一个游标对象
cursor = db.cursor()
#使用execute()方法执行SQL查询
cursor.execute(sql)

#使用fetchone获取单条数据
#data = cursor.fetchone()

#使用fetchall查询多条数据
data = cursor.fetchall()
print(data)
db.close()

#connMysql('select * from test_coin');


#[2]插入数据库
def insertData():
db = pymysql.connect(host, username, password, database, charset = 'utf8')
cursor = db.cursor()

create_time = time.strftime('%Y-%m-%d %H:%M:%S')
update_time = time.strftime('%Y-%m-%d %H:%M:%S')
start_time = time.strftime('%Y-%m-%d %H:%M:%S')
end_time = time.strftime('%Y-%m-%d %H:%M:%S')

remark = '测试插入信息',update_time
print('开始')
#sql 插入一条语句
'''
sql = "insert into test_coin(uid,create_user,amount,create_time,modify_time)"\
"values ('%s','%s','%s','%s','%s')"\
%(166755433,123455,100.00,create_time,update_time)
'''

#sql 插入多条语句    
sql = "insert into test_coin(uid,create_user,amount,create_time,modify_time)"\
"values ('%s','%s','%s','%s','%s'),('%s','%s','%s','%s','%s'),('%s','%s','%s','%s','%s')"\
%(166755433,123455,100.00,create_time,update_time,166755433,123455,100.00,create_time,update_time,166755433,123455,100.00,create_time,update_time)

try:
print("执行插入;")
tt = cursor.execute(sql)
print(tt)    #返回执行成功的条数
db.commit()
except UnicodeEncodeError as e:
print(e)
db.rollback()
db.close()

#insertData()


#[3]查询操作
def selectData():
db = pymysql.connect(host, username, password, database, charset = 'utf8')
cursor = db.cursor()
sql = "select * from test_coin where id>='%d'"%(1)
try:
print("执行查询")
cursor.execute(sql)
results = cursor.fetchall()
for row in results:
id = row[0]
uid = row[1]
create_user = row[2]
amount = row[3]
create_time = row[4]
modify_time = row[5]
print("id=%d,uid=%d,create_user=%d,amount=%s,create_time=%s,modify_time=%s") %(id, uid, create_user, amount, create_time, modify_time)

db.commit()
except UnicodeEncodeError as e :
print(e)

db.close()

#selectData();


#[4]更新操作
def updateData():
db = pymysql.connect(host, username, password, database, charset='utf8')
cursor = db.cursor();
update_time = time.strftime('%Y-%m-%d %H:%M:%S')
sql = "update test_coin set modify_time='%s',amount=999 where id >=%d" %(update_time, 3)
try:
print('执行更新:')
cursor.execute(sql)
db.commit();
except UnicodeEncodeError as e :
print(e)
db.rollback()    #发生错误时回滚
db.close()

updateData()


#[5]删除操作
def deleteData():
db = pymysql.connect(host, username, password, database, charset='utf8')
cursor = db.cursor()
sql = "delete from test_coin where id = %d" %(4)
try:
print('执行删除')
cursor.execute(sql)
db.commit()
except UnicodeEncodeError as e:
print(e)
db.rollback()
db.close()

#deleteData();


4、备注
(1)前3句分析
#coding:utf-8        //解决字符编码乱码问题
import pymysql        //导入操作mysql的模块
import time            //导入时间time模块
(2)数据库创建步骤
1)创建数据库连接实例 db
2)创建一个游标 cursor
3)写/拼接 一个sql语句
4)使用游标的execute方法执行sql语句
1]如果是查询数据库的语句
cursor.execute(sql)
cursor.fetchone() 获取一条数据
cursor.fetchall() 获取全部数据
2]如果是操作数据库内容的语句,增删改
try: ... except 捕捉异常
try: 执行语句,commit提交
cursor.execute(sql)
db.commit()
except:数据回滚
db.rollback()
5)关闭数据库连接
db.close()
(3)    \ 转义,不换行     %占位符
"insert into test_coin(uid,create_user,amount,create_time,modify_time)"\
"values ('%s','%s','%s','%s','%s')"\
%(166755433,123455,100.00,create_time,update_time)



\