簡體   English   中英

將列表添加到單個MySQL表字段中

[英]Adding a list into a single MySQL table field

我有一個用Python創建的MySQL表

+--------------+--------------+------+-----+---------+-------+
| Field        | Type         | Null | Key | Default | Extra |
+--------------+--------------+------+-----+---------+-------+
| consensus    | char(40)     | NO   |     | NULL    |       |
| identityb32  | char(40)     | NO   |     | NULL    |       |
| pubdate      | char(40)     | NO   |     | NULL    |       |
| dirport      | char(6)      | NO   |     | NULL    |       |
| ip           | char(40)     | NO   |     | NULL    |       |
| orport       | char(40)     | NO   |     | NULL    |       |
| identityhash | char(40)     | NO   |     | NULL    |       |
| nick         | char(40)     | NO   |     | NULL    |       |
| version      | char(40)     | NO   |     | NULL    |       |
| flags        | varchar(500) | NO   |     | NULL    |       |
| identity     | char(40)     | NO   |     | NULL    |       |
| digest       | char(40)     | NO   |     | NULL    |       |
| pubtime      | char(40)     | NO   |     | NULL    |       |
+--------------+--------------+------+-----+---------+-------+
13 rows in set (0.00 sec)

對於一個小問題,一切工作都很好。

對於我的flags字段,我需要添加的值的格式為:

['Exit', 'Fast', 'Guard', 'HSDir', 'Named', 'Running', 'Stable', 'V2Dir', 'Valid']

而且我無法將這些值添加到表中。 為了將某個字段的所有標志值添加到標志字段,我需要做什么?

PYTHON代碼:

format = """','"""

c = 0
# Prepare SQL query to INSERT a record into the database.
sql = """INSERT INTO """ + onion_Add +"""(consensus, identityb32, pubdate, dirport, ip, orport, identityhash, nick, version, flags, identity, digest, pubtime)
         VALUES ('""" +consensus.consensus_name + format + identityb32[c] + format + pubdate[c] + format + dirport[c] + format + ip[c] + format + orport[c] + format + identityhash[c] + format + nick[c] + format + version[c] + format + flags + format + identity[c] + format + digest[c] + format + pubtime[c] + """')"""
try:
   # Execute the SQL command
   cursor.execute(sql)
   # Commit your changes in the database
   db.commit()
except:
   # Rollback in case there is any error
   db.rollback()
   print "adding to db error"
# disconnect from server
db.close()

您可能會發現,讓MySQLdb為您構建語句更加容易和安全:

sql_fmt = 'INSERT INTO %s (consensus, identityb32, pubdate, dirport, ip, orport, identityhash, nick, version, flags, identity, digest, pubtime) VALUES (' + ', '.join(['%s']*14) + ')'

...

cursor.execute(sql_fmt, (onion_Add, consensus.consensus_name,
                         identityb32[c], pubdate[c], dirport[c],
                         ip[c], orport[c], identityhash[c], nick[c],
                         version[c], ','.join(flags), identity[c],
                         digest[c], pubtime[c])
              )

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM