Python3操作mysql操作類
阿新 • • 發佈:2018-12-14
#下載mysql.connector 由於我的Anaconda裝了2和3,所以我首先在cm中使用activate命令切換到python3環境下,然後使用
pip install mysql.connector
#Mysql操作類 下面基於mysql.connector寫了一個簡單的mysql操作類:
# -*- coding: utf-8 -*-
import mysql.connector
class MyDB():
def __init__(self , host="127.0.0.1", username="root", password="112233", port=3306 , database="test"):
'''類例化,處理一些連線操作'''
self.host = host
self.username = username
self.password = password
self.database = database
self.port = port
self.cur = None
self.con = None
# connect to mysql
try:
self. con = mysql.connector.connect(host = self.host, user = self.username, password = self.password, port = self.port, database = self.database)
self.cur = self.con.cursor()
except :
raise "DataBase connect error,please check the db config."
def close(self):
'''結束查詢和關閉連線'''
self.con.close()
def create_table(self,sql_str):
'''建立資料表'''
try:
self.cur.execute(sql_str)
except Exception as e:
print(e)
def query_formatrs(self,sql_str):
'''查詢資料,返回一個列表,裡面的每一行是一個字典,帶欄位名
cursor 為連線游標
sql_str為查詢語句
'''
try:
self.cur.execute(sql_str)
rows = self.cur.fetchall()
r = []
for x in rows:
r.append(dict(zip(self.cur.column_names,x)))
return r
except:
return False
def query(self,sql_str):
'''查詢資料並返回
cursor 為連線游標
sql_str為查詢語句
'''
try:
self.cur.execute(sql_str)
rows = self.cur.fetchall()
return rows
except:
return False
def execute_update_insert(self,sql):
'''
插入或更新記錄 成功返回最後的id
'''
self.cur.execute(sql)
self.con.commit()
return self.cur.lastrowid
if __name__ == "__main__":
mydb = MyDB()
#建立表
mydb.create_table('create table user (id varchar(20) primary key, name varchar(20))')
#插入資料
mydb.execute_update_insert("insert into user (id, name) values ('1', 'Michael')")
# 查詢資料表
mydb_new = MyDB()
results = mydb.query("SELECT * FROM detailinfo")
print(results)
for row in results:
productname = row[0]
supportname = row[1]
productinterface = row[2]
print("productname=%s,supportname=%s,productinterface=%s" % \
(productname, supportname, productinterface))
list = mydb.query_formatrs("SELECT * FROM detailinfo")
for i in list:
print ("記錄號:%s 值:%s" % (list.index(i) + 1, i))
#關閉資料庫
mydb.close()
執行該程式可以看到資料庫"user"成功建立,並且插入了一條資料。再者,在控制檯中成功列印了資料庫detailinfo中的資料。如下面的一些圖所示: