【发布时间】:2018-09-18 18:55:28
【问题描述】:
将数据输入数据库
import MySQLdb
import time
import datetime
import calendar
localtime = time.asctime(time.localtime(time.time()))
print "Local current time :", localtime
打开数据库连接
db = MySQLdb.connect("localhost","root","","attendence" )
使用 cursor() 方法准备一个游标对象
cursor = db.cursor()
输入主题
subject=raw_input("Enter Subject Name:")
如果表已经存在,则使用 execute() 方法删除表。
sql="DROP TABLE IF EXISTS %s"%(subject)
cursor.execute(sql)
按要求建表
sql1= """CREATE TABLE %s (Sl_No. INT(200),NAME CHAR(20))"""%(subject)
cursor.execute(sql)
从服务器断开
db.close()
【问题讨论】:
-
这是不好的做法。您永远不应该接受原始输入并将其传递给任何 SQL 语句。准备好的语句应该有通过执行函数传入的值。
-
但是,我如何创建自己选择的表??
-
例如,您可以为表定义一个命名模式,一些静态部分和一些来自用户输入的动态部分。用户输入需要验证,例如它应该只允许字母和数字。然后将这两个部分组合起来形成实际的表名。通过这种方式,您可以极大地减少 SQL 注入攻击的漏洞,并在一定程度上混淆您的数据库实体的实际名称。尽管如此,做这样的事情并不是最好的主意。
-
好的,我明白了这个问题。
-
但是,我可以自己选择创建表吗??