pyodbc/sql - 新创建的表将转到 Master 数据库而不是指定的数据库
pyodbc/sql - Newly created tables are going to Master database and not specified database
我正在为 class 开发一个项目,我正在使用 Python 在我的 2016 SQL 服务器中创建数据库和表。我已经安装了 pyodbc,并且能够在 Python 和我的 SQL 服务器之间建立连接。但是,当我 运行 我的代码时,我能够创建 'mydatabase' 数据库...但是我要创建的后续表将转到 'Tables' 文件夹中的 'Master'数据库。
我已经尝试过在同一个 Python 文件中创建数据库和表,以及只添加表。结果始终相同 - 它进入主数据库,而不是 'mydatabase' 数据库。我做了很多谷歌搜索,看起来我的代码编写正确;所以,我现在不知道该看什么。
这是一口气创建数据库和表的代码...
import pyodbc
mydb = pyodbc.connect('Driver={SQL Server};'
'Server=DESKTOP-5I015MM\SQLEXPRESS;'
'Trusted_Connection=yes;')
mydb.autocommit = True
mycursor = mydb.cursor()
mycursor.execute("CREATE DATABASE mydatabase")
Q1 = "CREATE TABLE Contact(id INT IDENTITY(1,1) PRIMARY KEY, \
username varchar(255) NOT NULL, password varchar(255) NOT NULL, \
firstName varchar(255) NOT NULL, middleName varchar(255) NOT NULL, \
lastName varchar(255) NOT NULL, address varchar(255) NOT NULL, \
officePhone varchar(15) NOT NULL, cellPhone varchar(15) NOT NULL, \
email varchar(255) NOT NULL)"
mycursor.execute(Q1)
Q2 = "CREATE TABLE Manufacturer(name varchar(255) PRIMARY KEY, \
registeredCountry varchar(255) NOT NULL, \
contactPerson INT NOT NULL, \
FOREIGN KEY(contactPerson) REFERENCES Contact(id))"
mycursor.execute(Q2)
Q3 = "CREATE TABLE TestLab(name varchar(255) PRIMARY KEY, \
address varchar(255) NOT NULL, \
contactPerson INT NOT NULL, \
FOREIGN KEY(contactPerson) REFERENCES Contact(id))"
mycursor.execute(Q3)
Q4 = "CREATE TABLE Product(modelNumber varchar(255) PRIMARY KEY, \
manufacturer varchar(255) NOT NULL, \
maufacturingDate date NOT NULL, \
prodLength decimal(5,2) NOT NULL, \
prodWidth decimal(5,2) NOT NULL, \
cellTechnology varchar(255) NOT NULL, \
cableType varchar(255) NOT NULL, \
maximumSystemVoltage varchar(255) NOT NULL, \
ratedVoc decimal(3,1) NOT NULL, \
ratedIsc decimal(3,2) NOT NULL, \
ratedVmp decimal(3,1) NOT NULL, \
ratedImp decimal(3,2) NOT NULL, \
ratedPmp decimal(4,1) NOT NULL, \
ratedFf decimal(3,1) NOT NULL, \
FOREIGN KEY(manufacturer) REFERENCES Manufacturer(name))"
mycursor.execute(Q4)
Q5 = "CREATE TABLE TestResults(dataSource varchar(255) NOT NULL, \
modelNumber varchar(255) NOT NULL, \
reportingCondition varchar(255) NOT NULL, \
testSequence varchar(255) NOT NULL, \
testDate date NOT NULL, \
isc decimal(3,2) NOT NULL, \
voc decimal(3,1) NOT NULL, \
imp decimal(3,2) NOT NULL, \
vmp decimal(3,1) NOT NULL, \
pmp decimal(4,1) NOT NULL, \
ff decimal(3,1) NOT NULL, \
noct decimal(3,1) NOT NULL, \
PRIMARY KEY(dataSource, modelNumber), \
FOREIGN KEY(dataSource) REFERENCES TestLab(name), \
FOREIGN KEY(modelNumber) REFERENCES Product(modelNumber))"
mycursor.execute(Q5)
这里是在 'mydatabase' 数据库中创建表的代码,如果数据库已经存在于 SQL...
import pyodbc
mydb = pyodbc.connect('Driver={SQL Server};'
'Server=DESKTOP-5I015MM\SQLEXPRESS;'
'Database=mydatabase;'
'Trusted_Connection=yes;')
mydb.autocommit = True
mycursor = mydb.cursor()
Q1 = "CREATE TABLE Contact(id INT IDENTITY(1,1) PRIMARY KEY, \
username varchar(255) NOT NULL, password varchar(255) NOT NULL, \
firstName varchar(255) NOT NULL, middleName varchar(255) NOT NULL, \
lastName varchar(255) NOT NULL, address varchar(255) NOT NULL, \
officePhone varchar(15) NOT NULL, cellPhone varchar(15) NOT NULL, \
email varchar(255) NOT NULL)"
mycursor.execute(Q1)
Q2 = "CREATE TABLE Manufacturer(name varchar(255) PRIMARY KEY, \
registeredCountry varchar(255) NOT NULL, \
contactPerson INT NOT NULL, \
FOREIGN KEY(contactPerson) REFERENCES Contact(id))"
mycursor.execute(Q2)
Q3 = "CREATE TABLE TestLab(name varchar(255) PRIMARY KEY, \
address varchar(255) NOT NULL, \
contactPerson INT NOT NULL, \
FOREIGN KEY(contactPerson) REFERENCES Contact(id))"
mycursor.execute(Q3)
Q4 = "CREATE TABLE Product(modelNumber varchar(255) PRIMARY KEY, \
manufacturer varchar(255) NOT NULL, \
maufacturingDate date NOT NULL, \
prodLength decimal(5,2) NOT NULL, \
prodWidth decimal(5,2) NOT NULL, \
cellTechnology varchar(255) NOT NULL, \
cableType varchar(255) NOT NULL, \
maximumSystemVoltage varchar(255) NOT NULL, \
ratedVoc decimal(3,1) NOT NULL, \
ratedIsc decimal(3,2) NOT NULL, \
ratedVmp decimal(3,1) NOT NULL, \
ratedImp decimal(3,2) NOT NULL, \
ratedPmp decimal(4,1) NOT NULL, \
ratedFf decimal(3,1) NOT NULL, \
FOREIGN KEY(manufacturer) REFERENCES Manufacturer(name))"
mycursor.execute(Q4)
Q5 = "CREATE TABLE TestResults(dataSource varchar(255) NOT NULL, \
modelNumber varchar(255) NOT NULL, \
reportingCondition varchar(255) NOT NULL, \
testSequence varchar(255) NOT NULL, \
testDate date NOT NULL, \
isc decimal(3,2) NOT NULL, \
voc decimal(3,1) NOT NULL, \
imp decimal(3,2) NOT NULL, \
vmp decimal(3,1) NOT NULL, \
pmp decimal(4,1) NOT NULL, \
ff decimal(3,1) NOT NULL, \
noct decimal(3,1) NOT NULL, \
PRIMARY KEY(dataSource, modelNumber), \
FOREIGN KEY(dataSource) REFERENCES TestLab(name), \
FOREIGN KEY(modelNumber) REFERENCES Product(modelNumber))"
mycursor.execute(Q5)
排后
Mycursor.execute("CREATE DATABASE mydatabase")
添加
mycursor.execute("USE mydatabase")
我正在为 class 开发一个项目,我正在使用 Python 在我的 2016 SQL 服务器中创建数据库和表。我已经安装了 pyodbc,并且能够在 Python 和我的 SQL 服务器之间建立连接。但是,当我 运行 我的代码时,我能够创建 'mydatabase' 数据库...但是我要创建的后续表将转到 'Tables' 文件夹中的 'Master'数据库。
我已经尝试过在同一个 Python 文件中创建数据库和表,以及只添加表。结果始终相同 - 它进入主数据库,而不是 'mydatabase' 数据库。我做了很多谷歌搜索,看起来我的代码编写正确;所以,我现在不知道该看什么。
这是一口气创建数据库和表的代码...
import pyodbc
mydb = pyodbc.connect('Driver={SQL Server};'
'Server=DESKTOP-5I015MM\SQLEXPRESS;'
'Trusted_Connection=yes;')
mydb.autocommit = True
mycursor = mydb.cursor()
mycursor.execute("CREATE DATABASE mydatabase")
Q1 = "CREATE TABLE Contact(id INT IDENTITY(1,1) PRIMARY KEY, \
username varchar(255) NOT NULL, password varchar(255) NOT NULL, \
firstName varchar(255) NOT NULL, middleName varchar(255) NOT NULL, \
lastName varchar(255) NOT NULL, address varchar(255) NOT NULL, \
officePhone varchar(15) NOT NULL, cellPhone varchar(15) NOT NULL, \
email varchar(255) NOT NULL)"
mycursor.execute(Q1)
Q2 = "CREATE TABLE Manufacturer(name varchar(255) PRIMARY KEY, \
registeredCountry varchar(255) NOT NULL, \
contactPerson INT NOT NULL, \
FOREIGN KEY(contactPerson) REFERENCES Contact(id))"
mycursor.execute(Q2)
Q3 = "CREATE TABLE TestLab(name varchar(255) PRIMARY KEY, \
address varchar(255) NOT NULL, \
contactPerson INT NOT NULL, \
FOREIGN KEY(contactPerson) REFERENCES Contact(id))"
mycursor.execute(Q3)
Q4 = "CREATE TABLE Product(modelNumber varchar(255) PRIMARY KEY, \
manufacturer varchar(255) NOT NULL, \
maufacturingDate date NOT NULL, \
prodLength decimal(5,2) NOT NULL, \
prodWidth decimal(5,2) NOT NULL, \
cellTechnology varchar(255) NOT NULL, \
cableType varchar(255) NOT NULL, \
maximumSystemVoltage varchar(255) NOT NULL, \
ratedVoc decimal(3,1) NOT NULL, \
ratedIsc decimal(3,2) NOT NULL, \
ratedVmp decimal(3,1) NOT NULL, \
ratedImp decimal(3,2) NOT NULL, \
ratedPmp decimal(4,1) NOT NULL, \
ratedFf decimal(3,1) NOT NULL, \
FOREIGN KEY(manufacturer) REFERENCES Manufacturer(name))"
mycursor.execute(Q4)
Q5 = "CREATE TABLE TestResults(dataSource varchar(255) NOT NULL, \
modelNumber varchar(255) NOT NULL, \
reportingCondition varchar(255) NOT NULL, \
testSequence varchar(255) NOT NULL, \
testDate date NOT NULL, \
isc decimal(3,2) NOT NULL, \
voc decimal(3,1) NOT NULL, \
imp decimal(3,2) NOT NULL, \
vmp decimal(3,1) NOT NULL, \
pmp decimal(4,1) NOT NULL, \
ff decimal(3,1) NOT NULL, \
noct decimal(3,1) NOT NULL, \
PRIMARY KEY(dataSource, modelNumber), \
FOREIGN KEY(dataSource) REFERENCES TestLab(name), \
FOREIGN KEY(modelNumber) REFERENCES Product(modelNumber))"
mycursor.execute(Q5)
这里是在 'mydatabase' 数据库中创建表的代码,如果数据库已经存在于 SQL...
import pyodbc
mydb = pyodbc.connect('Driver={SQL Server};'
'Server=DESKTOP-5I015MM\SQLEXPRESS;'
'Database=mydatabase;'
'Trusted_Connection=yes;')
mydb.autocommit = True
mycursor = mydb.cursor()
Q1 = "CREATE TABLE Contact(id INT IDENTITY(1,1) PRIMARY KEY, \
username varchar(255) NOT NULL, password varchar(255) NOT NULL, \
firstName varchar(255) NOT NULL, middleName varchar(255) NOT NULL, \
lastName varchar(255) NOT NULL, address varchar(255) NOT NULL, \
officePhone varchar(15) NOT NULL, cellPhone varchar(15) NOT NULL, \
email varchar(255) NOT NULL)"
mycursor.execute(Q1)
Q2 = "CREATE TABLE Manufacturer(name varchar(255) PRIMARY KEY, \
registeredCountry varchar(255) NOT NULL, \
contactPerson INT NOT NULL, \
FOREIGN KEY(contactPerson) REFERENCES Contact(id))"
mycursor.execute(Q2)
Q3 = "CREATE TABLE TestLab(name varchar(255) PRIMARY KEY, \
address varchar(255) NOT NULL, \
contactPerson INT NOT NULL, \
FOREIGN KEY(contactPerson) REFERENCES Contact(id))"
mycursor.execute(Q3)
Q4 = "CREATE TABLE Product(modelNumber varchar(255) PRIMARY KEY, \
manufacturer varchar(255) NOT NULL, \
maufacturingDate date NOT NULL, \
prodLength decimal(5,2) NOT NULL, \
prodWidth decimal(5,2) NOT NULL, \
cellTechnology varchar(255) NOT NULL, \
cableType varchar(255) NOT NULL, \
maximumSystemVoltage varchar(255) NOT NULL, \
ratedVoc decimal(3,1) NOT NULL, \
ratedIsc decimal(3,2) NOT NULL, \
ratedVmp decimal(3,1) NOT NULL, \
ratedImp decimal(3,2) NOT NULL, \
ratedPmp decimal(4,1) NOT NULL, \
ratedFf decimal(3,1) NOT NULL, \
FOREIGN KEY(manufacturer) REFERENCES Manufacturer(name))"
mycursor.execute(Q4)
Q5 = "CREATE TABLE TestResults(dataSource varchar(255) NOT NULL, \
modelNumber varchar(255) NOT NULL, \
reportingCondition varchar(255) NOT NULL, \
testSequence varchar(255) NOT NULL, \
testDate date NOT NULL, \
isc decimal(3,2) NOT NULL, \
voc decimal(3,1) NOT NULL, \
imp decimal(3,2) NOT NULL, \
vmp decimal(3,1) NOT NULL, \
pmp decimal(4,1) NOT NULL, \
ff decimal(3,1) NOT NULL, \
noct decimal(3,1) NOT NULL, \
PRIMARY KEY(dataSource, modelNumber), \
FOREIGN KEY(dataSource) REFERENCES TestLab(name), \
FOREIGN KEY(modelNumber) REFERENCES Product(modelNumber))"
mycursor.execute(Q5)
排后
Mycursor.execute("CREATE DATABASE mydatabase")
添加
mycursor.execute("USE mydatabase")