python - 将列表添加到单个 MySQL 表字段中

标签 python mysql

我有一个用 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])
              )

关于python - 将列表添加到单个 MySQL 表字段中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29033102/

相关文章:

python - 不支持的方法 POST,通过简单的 python 服务器

python - 抓取拆分字符串的最后 2 个,python

python - Django 1.7 中不再支持数字键选择吗?

python - 如何管理 "NavigationToolbar2TkAgg"工具栏的位置?

mysql - 使用 RJDBC 在 R 中创建 JDBC 驱动程序

c# - 遇到 MySQL 异常问题

sql - 当第二个表可能没有相关行时如何限制联接

PHP OOP - 重复记录条目

mysql - phpMyAdmin 报告不正确的查询时间

python - 使用 Flask 导入 Bootstrap