《python數據處理》6.7.3筆記:sqlite3數據庫的創建命令
一、創建不成功的源碼
源碼:
sqlite3 data_wrangling.db
報錯:
'sqlite3' 不是內部或外部命令,也不是可運行的程序或批處理文件。
二、成功創建的代碼
源自《python數據分析基礎》
import sqlite3
con = sqlite3.connect('data_wrangling.db')
con.commit()
三、dataset鏈接mysql
示例代碼,源自dataset示例,鏈接: link.
# connecting to a MySQL database with user and password
db = dataset.connect('mysql://user:password@localhost/mydatabase')
table = db['user']
table.insert(dict(name='John Doe', age=46, country='China'))
print(db.tables)
第一個報錯:
ModuleNotFoundError: No module named 'MySQLdb'
缺少MySQLdb,參照《MySQLdb安裝與使用》,下載MySQL-Python,
第二個報錯:
error: Microsoft Visual C++ 14.0 is required. Get it with "Build Tools for Visual Studio": https://visualstudio.microsoft.com/downloads/
還要下載 Microsoft Visual C++ 14.0,
參照《解決error: Microsoft Visual C++ 14.0 is required. Get it with "Microsoft Visual C++ Build Tools"兩個方法》找到辦法,但是在檢索Microsoft Visual C++ 14.0時發現Microsoft Visual C++ 14.0就是Visual Studio Community 2019的舊版啊!
但是已經下載了Visual Studio Community 2019
不應該有問題的啊!
重新找了一篇文章《Python創建本地數據庫》,MySQLdb在mysqlclient中,於是
import os
os.system('pip install -i https://pypi.tuna.tsinghua.edu.cn/simple mysqlclient')
下載成功
重新connect mysql沒有報錯
第三個報錯:
sqlalchemy.exc.OperationalError: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on 'localhost' (10061)")
一看沒有啓動mysql,那就啓動
第四個報錯:
sqlalchemy.exc.OperationalError: (MySQLdb._exceptions.OperationalError) (1049, "Unknown database 'mydatabase'")
原因:沒有創建數據庫
創建數據庫mydatabase的指令
import pymysql
db = pymysql.connect(host = 'localhost', user = 'root', password = '你自己的密碼', port = 3306)
cursor = db.cursor()
cursor.execute("CREATE DATABASE mydatabase DEFAULT CHARACTER SET utf8")
db.close()
使用pymysql創建的數據庫mydatabase
現在成功
使用dataset也可以創建
對源碼進行改進
源碼:
result = db.query('SELECT country, COUNT(*) c FROM user GROUP BY country')
for row in result:
print(row['country'], row['c'])
利用query()進行mysql傳參
db = dataset.connect('mysql://root:(密碼)@localhost')
result = db.query("CREATE DATABASE mydatabase_ DEFAULT CHARACTER SET utf8")
db = dataset.connect('mysql://root:密碼@localhost/mydatabase_')
table = db['users']
table.insert(dict(name='John Doe', age=46, country='China'))
print(db.tables)