2017-08-01 90 views
1

我有一個Python字符串(或潛在的Python字典),我想插入MySql表。
我的字符串如下:插入Python字符串或字典到MySQL

{'ticker': 'BTC', 'avail_supply': 16479075.0, 'prices': 2750.99, 'name': 'Bitcoin', '24hvol': 678995000.0} 

this is the error I'm getting

我有同樣的錯誤,如果我想插入快譯通格式。
我真的不明白這種錯誤(即字符串組件之間的'\')。 我該如何處理這個錯誤?任何爲什麼要正確地將整個字符串插入SQL中的特定TEXT單元格?
非常感謝!

+0

我建議你使用JSON格式將它插入到MySQL中使用[this](https://docs.python.org/3/library/json.html) – Carlos

+0

似乎沒有工作,因爲我得到這樣一個錯誤: 「TypeError:不是所有在字符串格式化過程中轉換的參數」 – sammtt

+0

你能發佈你有問題的代碼塊嗎? – BlooB

回答

1

以下是如何連接,製作表格和插入表格。

import MySQLdb as mdb 
import sys 
#connect 
con = mdb.connect('localhost', 'testuser', 'test623', 'testdb'); 

with con: 
    #need the cursor object so you can pass sql commands, also there is a dictionary cursor 
    cur = con.cursor() 
    #create example table 
    cur.execute("CREATE TABLE IF NOT EXISTS \ 
     Writers(Id INT PRIMARY KEY AUTO_INCREMENT, Name VARCHAR(25))") 
    #insert what you want 
    cur.execute("INSERT INTO Writers(Name) VALUES('Jack London')") 
    cur.execute("INSERT INTO Writers(Name) VALUES('Honore de Balzac')") 
    cur.execute("INSERT INTO Writers(Name) VALUES('Lion Feuchtwanger')") 
    cur.execute("INSERT INTO Writers(Name) VALUES('Emile Zola')") 
    cur.execute("INSERT INTO Writers(Name) VALUES('Truman Capote')") 

以上示例將一個表2周的cols,一個ID和一個名字

here關於如何從字典中鍵和列表中插入的東西,值到SQL爲例,基本上你需要佔位

sql = "INSERT INTO mytable (a,b,c) VALUES (%(qwe)s, %(asd)s, %(zxc)s);" 
data = {'qwe':1, 'asd':2, 'zxc':None} 

conn = MySQLdb.connect(**params) 

cursor = conn.cursor() 
cursor.execute(sql, data) 
cursor.close() 

conn.close()database 

,或者你可以去this,例如一個簡單直接的字典

placeholders = ', '.join(['%s'] * len(myDict)) 
columns = ', '.join(myDict.keys()) 
sql = "INSERT INTO %s (%s) VALUES (%s)" % (table, columns, placeholders) 
cursor.execute(sql, myDict.values()) 
+0

非常感謝您的回答。但是我不確定它會將整個字符串輸入到一個特定的單元格中,還是它? – sammtt

+0

有何新聞? @dirty_feri – sammtt

+0

查看最後一個示例,佔位符查看您擁有多少個鍵和值對,併爲您提供了一個佔位符的方法,您的鍵將成爲列。比你聲明數據庫可以理解。在插入語句中,首先%s是表格,第二個是您在前一行中創建的列,最後一個是佔位符。最後一行是執行你的sql字符串,並將這些值實際放入數據庫中。對不起,我正在旅行,並沒有訪問電腦來證明這一點。 – BlooB