创建表并使用python插入两条记录SQL

时间:2019-05-26 12:18:20

标签: python sql-server pyodbc

我正在尝试使用MSSQL在本地服务器tempdb上的KHBW001数据库上创建表。我的代码是:

import pyodbc

connection = pyodbc.connect('Driver={SQL Server};'
                      'Server=KHBW001;'
                      'Database=tempdb;'
                      'Trusted_Connection=yes;')

cursor = connection.cursor()
cursor.executemany(
    "CREATE TABLE tempdb.dbo.NewTestPyTable(Symbol varchar(15), Shares integer, Price double)")  # creates new table

cursor.executemany("""
                INSERT INTO tempdb.dbo.NewTestPyTable (Symbol, Shares, Price)
                VALUES
                [('ETH',55,199.55),
                ('KHC',66,33.5)]
                """)  # insert two records into new table

connection.commit()  

我遇到了错误:

  

“创建表tempdb.dbo.NewTestPyTable(Symbol varchar(15),共享   整数,价格加倍)“)#创建新表

     

TypeError:函数正好接受2个参数(给定1个参数)

我不太了解我在做什么错。请协助

2 个答案:

答案 0 :(得分:1)

想通了...

import pyodbc

connection = pyodbc.connect('Driver={SQL Server};'
                      'Server=KHBW001;'
                      'Database=tempdb;'
                      'Trusted_Connection=yes;')

cursor = connection.cursor()
cursor.execute(
    "CREATE TABLE NewTestPyTable(Symbol varchar(15), Shares integer, Price integer)")  # creates new table
params = [('ETH', 55, 199),
          ('KHC', 66, 33)]
# insert two records into new table
cursor.executemany(
    "INSERT INTO tempdb.dbo.NewTestPyTable (Symbol, Shares, Price) VALUES (?, ?, ?)", params)

connection.commit()

答案 1 :(得分:0)

我首先认为问题在于表创建

这里是文档如何正确创建它 https://www.w3schools.com/sql/sql_create_table.asp

SQL中的数据类型 https://www.journaldev.com/16774/sql-data-types

在我看来 您还需要使用货币类型作为价格。

这就是我要做的:

    import pyodbc
connection = pyodbc.connect('Driver={SQL Server};'
                      'Server=KHBW001;'
                      'Database=tempdb;'
                      'Trusted_Connection=yes;')

cursor = connection.cursor()
cursor.executemany(
    "CREATE TABLE tempdb.dbo.NewTestPyTable(Symbol varchar(15), Shares int, Price money)")  # creates new table

cursor.executemany("""
                INSERT INTO tempdb.dbo.NewTestPyTable (Symbol, Shares, Price)
                VALUES
                ('ETH',55,199.55),
                ('KHC',66,33.5);
                """)  # insert two records into new table

connection.commit()