我写了下面的代码来将数据插入到MEMSql中,MEMSql的语法与MySQL类似。在
def get_connection(db=DATABASE):
""" Returns a new connection to the database. """
return database.connect(host=HOST, port=PORT, user=USER, password=PASSWORD, database=db)
def insert_data(data):
print 'inserting data...'
for item in data:
vars_to_sql = []
keys_to_sql = []
print(item)
for key,value in item.iteritems():
if key == '__osHeaders':
value = str(value)
if isinstance(value, unicode):
vars_to_sql.append(value.encode('ascii', 'ignore'))
keys_to_sql.append(key.encode('ascii', 'ignore'))
else:
vars_to_sql.append(value)
keys_to_sql.append(key)
keys_to_sql = ', '.join(keys_to_sql)
with get_connection() as conn:
c = conn.execute("INSERT INTO tablename (%s) VALUES %r" % (keys_to_sql, tuple(vars_to_sql),))
print c
字段名不能硬编码,因为它们可能会根据我从另一端获得的数据而更改。不管怎样,我在这里重复的是一本字典。由于这一次插入非常慢,我需要将batch size作为变量,形成查询语句并相应地插入它。因此,批量大小为2的查询将是INSERT INTO tablename col1, col2 VALUES ('a', 'b'),('c','d')
请帮我介绍一下。在
如果您使用的是memsqlpython库,那么可以使用
memsql.common.query_builder
包中提供的multi_insert
助手。例如:请注意,multi_insert要求每个记录定义相同的列集,因为它将其转换为查询的基于元组的插入。在
以下答案可能对您有帮助:https://stackoverflow.com/a/8777776/3207406
相关问题 更多 >
编程相关推荐