将元组插入MySQL数据库
有没有人能告诉我怎么把Python中的元组或列表插入到MySQL数据库里?
我还想知道用户是否可以不插入任何内容就跳过某些行……
比如说,一个函数返回了这个元组:
return job(jcardnum, jreg, jcarddate, jcardtime, jcardserve, jdeliver)
假设用户在jreg
里什么都没输入,Python会自动在数据库的相关行里填入空值吗?还是说我会遇到问题?
2 个回答
也许你需要用到 cursor.executemany 这个功能?
假设用户在 jreg 里什么都没输入, 那么 Python 会不会自动在数据库的相关行里填入空值? 还是说我会遇到麻烦呢?
我觉得你可以试试看,如果不允许空值的话,你可能会看到警告或者错误信息。
正如评论所说,job(...)
这部分是一个函数(或者类)的调用——从这个调用返回的内容也会通过这个 return
语句返回。
假设返回的是一个元组。如果“用户没有在 jreg
中输入任何内容”——那么,根据你没有展示的很多代码,这可能会导致运行时错误(因为 jreg
没有定义)、一个空字符串,或者其他从未改变的初始默认值,或者是 None
;在最后一种情况下,这确实会在数据库中变成 NULL
(当然前提是数据库的结构允许这样——否则,数据库会拒绝插入操作)。
一旦你最终得到了一个正确的、合适的元组 T
,想要插入它,
`mycursor.execute('INSERT INTO sometable VALUES(?, ?, ?, ?, ?, ?)', T)
这个语法就差不多是你想要的——前提是 T
有六个项目(而且 sometable
也有六个列,当然)。每个 ?
是一个占位符,会被相应的项目替换。mycursor
需要是一个 Cursor 的实例,通常是通过之前调用 myconnection.cursor
得到的,其中 myconnection
是通过正确的调用 connect
从你使用的数据库 API 模块创建的 Connection 实例,带有正确的参数。
如果你能给我们展示大约 100 倍更多的代码和数据库结构,并告诉我们你具体想要实现什么,我们集体来说肯定能提供更有用和更具体的帮助——但根据你提供的这些微不足道的信息,我们大概只能提供这么多了;-)。