2017-08-01 17 views
1

私はMySqlテーブルに挿入したいPython文字列(または潜在的にPython辞書)を持っています。
私の文字列は以下の通りです:Pythonの文字列または辞書をMySQLに挿入します

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

this is the error I'm getting

私はDictの形式を挿入したい場合、私は、エラーの同じ種類を持っています。
この種のエラー(文字列のコンポーネント間の '\')は実際にはわかりません。 このエラーをどうすれば処理できますか? SQLで特定のTEXTセルに文字列全体を正しく挿入する理由は何ですか?
多くの感謝!

+0

[this](https://docs.python.org/3/library/json.html)を使用してJSON形式をMySQLに挿入することをお勧めします – 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')") 

上記の例では、基本的にはあなたが必要とする、SQLの値としてキーを持つ辞書とリストからのものを挿入する方法の例を2つのcolsの、1つのIDと1名

表情hereでテーブルを作成しますプレースホルダ

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 

かは、単純なまっすぐ進むのdict

placeholders = ', '.join(['%s'] * len(myDict)) 
columns = ', '.join(myDict.keys()) 
sql = "INSERT INTO %s (%s) VALUES (%s)" % (table, columns, placeholders) 
cursor.execute(sql, myDict.values()) 
のための一例として thisで行くことができます
+0

あなたの答えに多くの感謝。しかし、私はそれが1つの特定のセルに文字列全体を入力するかどうかはわかりませんか? – sammtt

+0

ニュースはありますか? @dirty_feri – sammtt

+0

最後の例を見ると、プレースホルダはあなたが持っているキーと値のペアの数を見て、プレースホルダを持つ方法を与えます。キーはカラムになります。あなたがデータベースが理解できる文を作るよりも。 Insertステートメントでは、最初に%sがテーブルであり、2つ目が前の行で作成した列で、最後の行がプレースホルダーです。最後の行は、あなたのSQL文字列を実行して、実際にデータベースに値を入れています。申し訳ありませんが、私は旅行していて、あなたのためにこれを実証するためにPCにアクセスできません。 – BlooB

関連する問題