可以从Azure App Service初始化数据库
如果我从Visual Studio启动它,我的应用程序可以很好地工作。该应用程序在Azure SQL数据库上工作并创建数据库。但是,如果我在应用程序服务上分发应用程序,则Web应用程序可以正常工作,但是一旦我尝试查询数据库,它就会给我一个错误。错误是:
sqlalchemy.exc.exc.programmingerror :( pyodbc.programmingmmingerror) [SQL Server]无效对象名称'用户'。(208)(SQLEXEXECDIRECTW)))
'42S02',[42S02] [Microsoft] [SQL Server的ODBC驱动程序17 ] (例如,首先在本地启动它)一切正常!因此,问题是它不想创建数据库。 我通过以下方式连接到数据库:
server = "bookingserver.database.windows.net"
database = 'bookingdatabase'
username = 'server'
password = #pass here#
driver = '{ODBC Driver 17 for SQL Server}'
odbc_str = 'DRIVER='+driver+';SERVER='+server+';PORT=1433;UID='+username+';DATABASE='+
database + ';PWD='+ password
connect_str = 'mssql+pyodbc:///?odbc_connect=' + urllib.parse.quote_plus(odbc_str)
app.config['SQLALCHEMY_DATABASE_URI'] = connect_str
_db = SQLAlchemy(app)
以:
class Prenotation(_db.Model):
id = _db.Column(_db.Integer, primary_key=True)
hour= _db.Column(_db.String (30))
username = _db.Column(_db.String (30))
code = _db.Column(_db.Integer)
def __init__( self, hour, username, code):
self.hour = hour
self.username = username
self.code = code
初始化数据库:
if __name__ == "__main__":
_db.create_all()
app.run()
I have an application that works perfectly if i start it from visual studio. The application works and creates a database on Azure SQL Database. However if I distribute the application on App Service, the web application works, but as soon as I try to query the database it gives me an error.The error is:
sqlalchemy.exc.ProgrammingError: (pyodbc.ProgrammingError) ('42S02', "[42S02] [Microsoft][ODBC Driver 17 for SQL Server][SQL Server]Invalid object name 'users'. (208) (SQLExecDirectW)")
However if I have previously created the database (for example by starting it locally first) everything works perfectly! So the problem is it doesn't want to create the database.
I connect to the database through:
server = "bookingserver.database.windows.net"
database = 'bookingdatabase'
username = 'server'
password = #pass here#
driver = '{ODBC Driver 17 for SQL Server}'
odbc_str = 'DRIVER='+driver+';SERVER='+server+';PORT=1433;UID='+username+';DATABASE='+
database + ';PWD='+ password
connect_str = 'mssql+pyodbc:///?odbc_connect=' + urllib.parse.quote_plus(odbc_str)
app.config['SQLALCHEMY_DATABASE_URI'] = connect_str
_db = SQLAlchemy(app)
And my tables like:
class Prenotation(_db.Model):
id = _db.Column(_db.Integer, primary_key=True)
hour= _db.Column(_db.String (30))
username = _db.Column(_db.String (30))
code = _db.Column(_db.Integer)
def __init__( self, hour, username, code):
self.hour = hour
self.username = username
self.code = code
To initialize the database:
if __name__ == "__main__":
_db.create_all()
app.run()
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您可以对代码进行一些更改。
在此代码中进行一些初始化的数据库更改。
旧代码
新代码从这个地方移动_db.create_all()。
感谢 @luiss.black提出的宝贵建议,无法从Azure应用服务中初始化数据库。
You can do some changes to the code.
do some initialize database change in this code.
old code
new Code move _db.create_all() from this place.
Thanks to @luiss.black for your valuable suggestion to detect Can't initialize database from Azure App Service.