简体   繁体   English

使用sqlalchemy连接到本地Postgresql

[英]Connecting to locally postgresql using sqlalchemy

Definitely a beginner here. 绝对是这里的初学者。 I'm having issues connecting to postgresql database run locally on a macosx machine using postgres.app and sqlalchmey: 我在使用postgres.app和sqlalchmey连接到在Macosx机器上本地运行的postgresql数据库时遇到问题:

import psycopg2 import sqlalchemy 导入psycopg2导入sqlalchemy

engine = sqlalchemy.create_engine('postgresql://localhost/practice.db') engine.connect() engine = sqlalchemy.create_engine('postgresql://localhost/practice.db')engine.connect()

Returns: OperationalError: (OperationalError) FATAL: database "practice.db" does not exist None None 返回: OperationalError:(OperationalError)致命:数据库“ practice.db”不存在无无

Thanks, Evan 谢谢,埃文

You have to create that database before you can create_engine 您必须先创建该数据库,然后才能创建create_engine

from urlparse import urlparse, urlunparse

def recreate_db(url):
    parsed = urlparse(url)
    #parse url so you know host 
    host_url = urlunparse((parsed.scheme, parsed.netloc, '/', '', '', ''))

    #create_engine without database name
    engine = create_engine(host_url, convert_unicode=True)
    dbname = parsed.path.strip('/')
    engine.execute('commit')
    try:
        #drop (and clean) database if it exists with raw query
        engine.execute('drop database `%s`;'%dbname)
        engine.execute('commit')
    except OperationalError:
        pass

    #create database
    engine.execute('create database `%s` default character set utf8 ;'%dbname)
    engine.execute('commit')
    print 'Done cleanup'

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM