python3中mysql 插入多个字段如何处理

sql_word = "insert into xhs_note(name,is_ads,nickename,user_id,note_id,title,desc_content,time_stamp,crawl_time,liked_count,collected_count,comments_count,comment_content)values('%s','0','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s')" % (
    user_name, nickname, user_id, note_list_id, note_list_title, desc_content, str(time_stamp),

这种几十个字段的这种不用json 能有其他方式快点处理吗?因为字段太多了,很麻烦,写几十个%s

阅读 3.6k
5 个回答

用第三方orm库

可以使用sequelize

提供一种思路

data = {"user_name": "my_name"}
sql_word = "insert into xhs_note(name)values('{user_name}')".format(**data)

当然推荐orm类似于SQLAlchemy 防止注入

新手上路,请多包涵

直接用sqlacodegen搭配sqlalchemy
sqlacodegen:将sql库生成类
sqlalchemy:提供orm直接更改字段值

python数据库操作最好用orm,比写SQL优点多多,Django/odoo什么的框架都是用orm。推荐peewee,比SQLAlchemy轻量。

针对你的问题,可以把要插入的数据(已经格式化好,包括给字符串加引号)存到字典里,然后

data={field_name:formatted_value,...}
def sql_insert(table,data):
    fields,values=zip(*list(data.items()))
    return "insert into {}({}) values({})".format(table,",".join(fields),",".join(values))

其实上面的代码就是orm万中之一的功能。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进