python寫入mysql資料庫
在使用tushare將數據存入MySQL時,可能會遇到文本欄位錯誤問題,具體錯誤信息為:不支持BLOB/TEXT作為主鍵和索引。若原程序沒有處理這個問題,可以嘗試修改代碼如下:
首先,需要明確指出錯誤原因在於默認情況下,pandas.DataFrame.to_sql函數對TEXT類型處理不當。為解決此問題,需在寫入資料庫時手動指定索引欄位與欄位類型。具體步驟為導入from sqlalchemy import VARCHAR,並在調用to_sql函數時,明確設置參數。
例如,修改後的代碼可以如下所示:
通過上述修改,可以成功避免BLOB/TEXT類型作為主鍵和索引的錯誤。但是,若仍遇到類似問題,建議查閱官方文檔或社區討論以獲取更多解決方案。
參考文獻:
大西洋暖流:pandas.DataFrame.to_sql寫入Mysql報錯1170
② Python 進階知識全篇-Python MySQL - mysql-connector
MySQL 是廣泛使用的資料庫管理系統,如果你對 MySQL 不夠熟悉,建議先閱讀我們的 MySQL 教程。此教程將帶你深入了解如何通過 mysql-connector 來連接和操作 MySQL。
mysql-connector 是 MySQL 官方提供的驅動程序,能夠幫助你輕松實現 Python 與 MySQL 之間的交互。你只需要使用 pip 命令安裝它,具體命令如下:
python -m pip install mysql-connector
為驗證安裝是否成功,可以嘗試運行以下測試代碼:
import mysql.connector
執行此代碼後若未出現錯誤提示,說明安裝已成功。
若你的 MySQL 版本為 8.0,則需注意密碼驗證方式已從 mysql_native_password 更改為 caching_sha2_password。因此,在安裝驅動後,還需對 my.ini 配置文件進行修改,並執行相應的 SQL 命令以確保密碼驗證方式符合新版本要求。更多詳細操作,可以參考:闕贊:Python MySQL8.0 錯誤創建資料庫連接。
連接資料庫的操作可以通過以下 Python 代碼實現:
import mysql.connector
嘗試連接資料庫,如果資料庫不存在,代碼將輸出相應的錯誤信息。
資料庫的創建則使用 "CREATE DATABASE" 語句。以下代碼示例創建了一個名為 runoob_db 的資料庫:
創建資料庫前,可以使用 "SHOW DATABASES" 命令查看當前是否存在特定資料庫:
執行此命令後,你將看到資料庫列表。若資料庫已存在,嘗試再次創建將收到錯誤信息。
為了實現數據表的創建,我們使用 "CREATE TABLE" 語句。例如,以下代碼創建了一個名為 sites 的數據表,包含欄位 name 和 url:
執行此代碼後,資料庫中將出現名為 sites 的數據表。
可以使用 "SHOW TABLES" 命令查看數據表是否已成功創建。
通常,我們會為主鍵設置一個 INT AUTO_INCREMENT PRIMARY KEY,確保起始值為 1,並逐步遞增。如果表已創建,可通過 ALTER TABLE 命令添加主鍵。
插入數據的關鍵操作使用 "INSERT INTO" 語句。以下代碼插入了一條數據至 sites 表:
執行後,數據表中應新增一條記錄。
批量插入數據時,利用 executemany() 方法,該方法接收元組列表作為參數,包含要插入的數據。下面代碼示例批量插入多條記錄至 sites 表:
執行後,輸出應為插入記錄成功的信息。
在數據插入後,若需獲取新記錄的 ID,可使用以下代碼:
執行此代碼後,輸出應為插入記錄成功,並顯示其 ID。
查詢數據使用 SELECT 語句,以下代碼示例展示如何獲取 sites 表中的所有數據:
執行後,輸出結果將包含所有記錄。
若僅需讀取特定欄位的數據,可以通過指定欄位來獲取。同樣,利用 SELECT 語句,以下代碼展示如何獲取 sites 表中指定欄位的數據:
執行後,輸出結果將只包含指定欄位。
如果只讀取一條數據,可以使用 fetchone() 方法。以下代碼示例展示如何僅讀取第一條數據:
執行此代碼後,輸出結果應為一條記錄。
使用 where 語句可以讀取特定條件的數據。以下代碼示例讀取 name 欄位為 'SHUAIGEGE' 的記錄:
執行後,輸出結果應為符合條件的記錄。
通配符 % 可以用來匹配包含特定字元串的數據。以下代碼示例讀取包含 'google' 的記錄:
執行後,輸出結果應為包含 'google' 的所有記錄。
為了防止 SQL 注入攻擊,使用 %s 佔位符來轉義查詢條件。以下代碼示例展示如何安全地執行查詢:
執行此代碼後,輸出結果應為安全查詢到的數據。
數據查詢結果可以通過 ORDER BY 語句進行排序,默認為升序,關鍵字為 ASC。若需設置降序排序,使用 DESC 關鍵字。以下代碼示例展示如何按 name 欄位升序排序查詢結果:
執行後,輸出結果應為按 name 欄位升序排序後的所有記錄。
降序排序的實現方法與升序類似,只需將 ASC 替換為 DESC 關鍵字。以下代碼示例展示如何按 name 欄位降序排序查詢結果:
執行後,輸出結果應為按 name 欄位降序排序後的所有記錄。
限制查詢結果的數量可通過 LIMIT 語句實現,該語句允許指定返回的具體記錄數。以下代碼示例展示如何獲取前 3 條記錄:
執行後,輸出結果應為前 3 條記錄。
OFFSET 關鍵字用於指定起始位置,從而獲取特定范圍內的記錄。以下代碼示例展示如何從第二條記錄開始獲取前 3 條記錄:
執行後,輸出結果應為從第二條記錄開始的前 3 條記錄。
刪除記錄時,使用 DELETE FROM 語句,確保使用 WHERE 條件語句來指定要刪除的記錄,避免誤刪整個表。以下代碼示例展示如何刪除 name 為 'stackoverflow' 的記錄:
執行後,輸出結果應為刪除的記錄數量。
為了防止 SQL 注入攻擊,使用 %s 佔位符轉義刪除條件。以下代碼示例展示如何安全地執行刪除操作:
執行後,輸出結果應為刪除的記錄數量。
更新表數據使用 UPDATE 語句,確保使用 WHERE 條件語句指定更新的數據行。以下代碼示例展示如何將 name 為 'Zhihu' 的記錄更新為 'ZH':
執行後,輸出結果應為更新的記錄數量。
使用 %s 佔位符轉義更新條件,以防止 SQL 注入攻擊。以下代碼示例展示如何安全地執行更新操作:
執行後,輸出結果應為更新的記錄數量。
刪除表使用 DROP TABLE 語句,確保使用 IF EXISTS 關鍵字來判斷表是否存在,避免操作不存在的表。以下代碼示例展示如何刪除名為 sites 的表:
③ 如何將python中的數據寫到mysql資料庫中
利用mysql插件 pymysql;寫insert語句直接插入到資料庫
安裝:pip install pymysql。
代碼:excute_sql方法是執行更新,插入操作。get_datasset方法是查詢。
#coding:utf-8
importpymysql.cursors
defexecute_sql(sql):
conn=pymysql.connect(host='127.0.0.1',port=3306,user='root',passwd='123456',db='db',charset="utf8")
try:
withconn.cursor()ascursor:
cursor.execute(sql)
conn.commit()
finally:
conn.close()
defget_dataset(sql):
conn=pymysql.connect(host='127.0.0.1',port=3306,user='root',passwd='123456',db='db',charset="utf8")
try:
withconn.cursor()ascursor:
cursor.execute(sql)
returncursor.fetchall()
finally:
conn.close()
④ Python之MySQL操作
MySQL 是目前使用最廣泛的資料庫之一,它有著良好的性能,能夠跨平台,支持分布式,能夠承受高並發。下載地址: MySQL :: Download MySQL Community Server 安裝參考: 圖解MySQL5.7.20免安裝版配置方法-網路經驗 (.com)
Python 大致有如下 5 種方式操作 MySQL。
先使用如下建表語句創建一張簡單的資料庫表。
2.1 mysqlclient
執行 pip install mysqlclient 進行安裝,看一下具體操作。
新增
查詢
cursor 查看方法
修改
刪除
2.2 PyMySQL
執行 pip install pymysql 進行安裝,使用方式與 mysqlclient 基本類似。
2.3 peewee
執行 pip install peewee 進行安裝,看一下具體操作。
定義映射類
新增
查詢
修改
刪除
2.4 SQLAlchemy
執行 pip install sqlalchemy 進行安裝,看一下具體操作。
定義映射類
新增
查詢
修改
刪除
Python學習日記
⑤ Python讀取MySQL資料庫基本操作
Python通過pymysql庫進行MySQL資料庫的基本操作實例演示如下:
首先,確保已安裝必要的庫,如pymysql。使用以下語法創建資料庫連接:
engine = create_engine('mysql+pymysql://用戶名:密碼@伺服器地址:3306/資料庫名')
接下來,我們進行數據表查詢和操作。例如,查詢"期權的基本信息"和"期權的風險指標"兩個表:
- 從"option_inf"表中篩選"證券名稱"列。
- 從"option_risk"表中篩選Gamma為0的行,以及Delta大於0.5且Gamma不為0的數據。
對數據進行排序,如對"option_risk"表按"收盤價"升序,"Delta"和"證券代碼"降序。
執行連接操作,包括內連接(交集)、並集、左連接和右連接,以獲取所需信息。
在"option_merge"數據框中,進行基礎操作,如修改"行權方式"和"交割方式",添加、刪除行和列,以及重新組織數據。
將修改後的option_merge數據框寫入資料庫。在使用資料庫軟體(如DBeaver或Navicat)時,確保表格式為utf8以支持中文字元。經過調整後,重新運行寫入代碼。
操作成功後,資料庫中應可見新增和修改的數據。為了避免命名規范問題,建議使用英文命名。
想要深入了解更多金融與Python的結合應用,可以考慮購買我的書籍《Python金融量化實戰固定收益類產品分析》,它不僅適合初學者,還包含豐富的源代碼、視頻教程和AI入門資源。
⑥ 掌握Python 操作 MySQL 資料庫
本文Python 操作 MySQL 資料庫需要是使用到 PyMySQL 驅動
Python 操作 MySQL 前提是要安裝好 MySQL 資料庫並能正常連接使用,安裝步驟詳見下文。
注意: 安裝過程我們需要通過開啟管理員許可權來安裝,否則會由於許可權不足導致無法安裝。
首先需要先下載 MySQL 安裝包, 官網下載地址 下載對應版本即可,或直接在網上拉取並安裝:
許可權設置:
初始化 MySQL:
啟動 MySQL:
查看 MySQL 運行狀態:
Mysql安裝成功後,默認的root用戶密碼為空,你可以使用以下命令來創建root用戶的密碼:
登陸:
創建資料庫:
查看資料庫:
PyMySQL 模塊使用 pip命令進行安裝:
假如系統不支持 pip 命令,可以使用以下方式安裝:
pymysql .connect 函數:連接上資料庫
輸出結果顯示如下:表面資料庫連接成功
使用 pymysql 的 connect() 方法連接資料庫,connect 參數解釋如下:
conn.cursor():獲取游標
如果要操作資料庫,光連接數據是不夠的,咱們必須拿到操作資料庫的游標,才能進行後續的操作,游標的主要作用是用來接收資料庫操作後的返回結果,比如讀取數據、添加數據。通過獲取到的資料庫連接實例 conn 下的 cursor() 方法來創建游標,實例如下:
輸出結果為:
cursor 返回一個游標實例對象,其中包含了很多操作數據的方法,如執行sql語句,sql 執行命令: execute() 和 executemany()
execute(query,args=None):
executemany(query,args=None):
其他游標對象如下表:
完整資料庫連接操作實例如下:
以上結果輸出為:
創建表代碼如下:
如下所示資料庫表創建成功:
插入數據實現代碼:
插入數據結果:
Python查詢Mysql使用 fetchone() 方法獲取單條數據, 使用fetchall() 方法獲取多條數據。
查詢數據代碼如下:
輸出結果:
DB API中定義了一些資料庫操作的錯誤及異常,下表列出了這些錯誤和異常:
本文給大家介紹 Python 如何連接 Mysql 進行數據的增刪改查操作,文章通過簡潔的代碼方式進行示例演示,給使用 Python 操作 Mysql 的工程師提供支撐。
⑦ python上傳數據到MySQL資料庫
在這里分享一下在python中上傳數據到MySQL的整體流程。
利用for循環,可以依次把列表中的每一組數據寫入sql語句並執行。
需要注意的是values的每個值都需要用引號引起來,否則會報錯