如何使用Python在Mysql中使用用户输入输入表名? 将数据输入数据库 开放数据库连接 使用cursor()方法准备游标对象 输入主题 使用execute()方法删除已存在的表。 根据需要创建表格 断开与服务器的连接

如何使用Python在Mysql中使用用户输入输入表名? 将数据输入数据库 开放数据库连接 使用cursor()方法准备游标对象 输入主题 使用execute()方法删除已存在的表。 根据需要创建表格 断开与服务器的连接,python,mysql,Python,Mysql,db=MySQLdb.connect(“localhost”、“root”、“revred”、“TESTDB”)当然可以这样做。但不建议这样做。而且您的代码有一些错误,例如Sl\u No。是无效的列名。 所以我稍微修改一下你的代码 import MySQLdb import time import datetime import calendar localtime = time.asctime(time.localtime(time.time())) print ("Local current

db=MySQLdb.connect(“localhost”、“root”、“revred”、“TESTDB”)

当然可以这样做。但不建议这样做。而且您的代码有一些错误,例如
Sl\u No。
是无效的列名。 所以我稍微修改一下你的代码

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 = db.cursor()
subject = raw_input("Enter Subject Name:")
cursor.execute("show tables")
dele = "DROP TABLE IF EXISTS {tab}".format(tab=subject)
cre  = """CREATE TABLE {tab} (Sl_No INT(200),NAME CHAR(20))""".format(tab=subject)

def commit(sql):
    cursor.execute(sql)
    db.commit()

if subject.strip() in [tab[0] for tab in cursor.fetchall()]:
    commit(dele)
    commit(cre)
else:
    commit(cre)
db.close()

这是个坏习惯。您不应该接受原始输入并将其传递到任何SQL语句中。准备好的语句应该通过execute函数传递值。但是,我如何创建我自己选择的表?例如,您可以为表定义命名模式,一些静态部分和一些来自用户输入的动态部分。不过,用户输入需要验证,例如,它应该只允许字母和数字。然后将这两部分组合起来形成实际的表名。通过这种方式,您可以极大地减少SQL注入攻击的漏洞,并在一定程度上混淆DB实体的实际名称。尽管如此,做这样的事情并不是最好的主意。好吧,很好,我理解这个问题。但是,我可以自己选择创建表格吗??
db = MySQLdb.connect("localhost","root","","attendence" )
cursor = db.cursor()
subject=raw_input("Enter Subject Name:")
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()
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 = db.cursor()
subject = raw_input("Enter Subject Name:")
cursor.execute("show tables")
dele = "DROP TABLE IF EXISTS {tab}".format(tab=subject)
cre  = """CREATE TABLE {tab} (Sl_No INT(200),NAME CHAR(20))""".format(tab=subject)

def commit(sql):
    cursor.execute(sql)
    db.commit()

if subject.strip() in [tab[0] for tab in cursor.fetchall()]:
    commit(dele)
    commit(cre)
else:
    commit(cre)
db.close()