1. 程式人生 > 其它 >python連線mysql資料庫把取資料存入資料庫

python連線mysql資料庫把取資料存入資料庫

  •   安裝pymysql庫
pip install pymysql
  •   建儲存資料表

CREATE DATABASE `stock` /*!40100 DEFAULT CHARACTER SET utf8 */ /*!80016 DEFAULT ENCRYPTION='N' */;


-- stock.stock_all_codes definition CREATE TABLE `stock_all_codes` ( `code` varchar(100) NOT NULL COMMENT '股票程式碼' ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='股票程式碼表';

  

  • 連線資料來源
import pymysql
db = pymysql.connect(host='localhost', user='root', password='123456', port=3306, db='stock')
cursor = db.cursor()
sql = 'select * from stock_all_codes;'
#查詢sql
print(sql)
cursor.execute(sql)
cursor.close()
db.close()

  

  • 查詢資料庫
# -*- coding: UTF-8 -*-
import pymysql

# 開啟資料庫連線
db = pymysql.connect(host="localhost", user="root", passwd="123456", db="stock", charset='utf8' )

# 使用cursor()方法獲取操作遊標
cursor = db.cursor()

# SQL 查詢語句
sql = "SELECT * FROM stock_all_codes"
try:
# 執行SQL語句
cursor.execute(sql)
# 獲取所有記錄列表
results = cursor.fetchall()
print("程式碼")
for it in results:
for i in range(len(it)):
print(it[i]+"\n")
except:
print("Error: unable to fecth data")

# 關閉資料庫連線
cursor.close()
db.close()

  

  • 插入資料
import pymysql
db = pymysql.connect(host='localhost',user='root', password='123456', port=3306, db='stock')
cursor = db.cursor()
# 多欄位動態插入mysql資料庫中,data,新增欄位
data = {
    'code': 'sh000001'
}
table = 'stock_all_codes'
keys = ', '.join(data.keys())
values = ', '.join(['%s'] * len(data))
sql = 'INSERT INTO {table}({keys}) VALUES ({values})'.format(table=table, keys=keys, values=values)
try:
    cursor.execute(sql, tuple(data.values()))
    print('入庫成功!')
    db.commit()
except:
    print('入庫失敗')
    db.rollback()
cursor.close()
db.close()

  

  • 更新資料
import pymysql
db = pymysql.connect(host='localhost',user='root', password='123456', port=3306, db='stock')
cursor = db.cursor();
data = {
    'code': 'sh00002'
}
table = 'stock_all_codes'
keys = ', '.join(data.keys())
values = ', '.join(['%s'] * len(data))
sql = 'INSERT INTO {table}({keys}) VALUES ({values}) ON DUPLICATE KEY UPDATE'.format(table=table, keys=keys, values=values)
update = ','.join([" {key} = %s".format(key=key) for key in data])
sql += update
try:
    cursor.execute(sql, tuple(data.values())*2)
    print('更新成功')
    db.commit()
except:
    print('更新失敗')
    db.rollback()
cursor.close()
db.close()