擅长:python、mysql、java
<p>无法参数化表或列的名称,因此必须生成查询字符串。这意味着您应该控制输入的名称是<em>sane</em>,因为从字符串生成查询是已知的<a href="https://en.wikipedia.org/wiki/SQL_injection" rel="nofollow noreferrer">SQL injection</a>的向量</p>
<p>但大多数(如果不是全部的话)SQL数据库允许在表不存在的情况下创建表。语法只是:</p>
<pre><code>CREATE TABLE table_name IF NOT EXISTS (
column_name type,
...)
</code></pre>
<p>在这里,你可以做:</p>
<pre><code>import re
...
def create_table():
TableName = input("Enter table name: ")
# control name:
if not re.match(r'\w*$', TableName):
raise IllegalValue("Invalid table name")
tb_create =f"""CREATE TABLE {TableName} IF NOT EXISTS (ID INT PRIMARY KEY,title VARCHAR(10),
forename VARCHAR(20), surname VARCHAR(20))"""
conn.execute(tb_create)
</code></pre>