Python MySQLdb 插入數據

其實python連接MySQL的方法不少,比較經常使用的是MySQLdb這個模塊,因爲本身準備往數據庫裏面插入一條日期數據,在格式化的日期數據的時候一直報錯,因此這裏簡單寫了一個往MySQL數據庫的插入數據的demo。python

# -*- coding: utf-8 -*-
# @Time    : 2018/1/22 21:39
# @Author  : Hunk
# @Email   : qiang.liu@ikooo.cn
# @File    : ex125.py
# @Software: PyCharm

import MySQLdb
from datetime import datetime

# 打開數據庫鏈接
db = MySQLdb.connect("127.0.0.1", "root", "root", "cars", charset='utf8')

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

# 使用execute方法執行SQL語句
date = datetime.now().strftime("%Y-%m-%d")
sql = """insert into series values(%d,%s,str_to_date(%s,'%%Y-%%m-%%d'))"""
param = (1, "哈弗H6", date)
cursor.execute(sql, param)
# 提交到數據庫執行
db.commit()

# 關閉數據庫鏈接
cursor.close()
db.close()
 

其實最初操做的時候一個簡單的數據插入的動做還遇到了幾個常見的問題,因此在這裏總結下sql

問題1:插入數據的時候採用%d 來格式化sql語句;數據庫

報錯:TypeError: %d format: a number is required, not str"ui

解決方案:spa

  The format string is not really a normal Python format string. Youmust always use %s for all fields. 也就是MySQLdb的字符串格式化不是標準的python的字符串格式化,code

問題2:連接數據庫的時候沒有指定數據庫的字符集插入中文數據後發現顯示亂碼;orm

解決辦法:blog

  連接的時候直接指定字符集或者連接完成後設置本身的字符集;utf-8

  db = MySQLdb.connect("127.0.0.1", "root", "root", "cars", charset='utf8')
相關文章
相關標籤/搜索